This is fine. The convention in objective C is that errors are overridden. E.g.
NSError* error;
[checkSomething error:error];
[checkSomethingElse error:error];

The convention is that the second call will:
1. Not touch the error if everything is ok (so previous error will be preserved)
2. Override the error with the new error if this check doesn't pass.

This makes diagnostics nightmare on cascading errors, but we help through logging every error as it occurs.