Re: NSError in NSDocument readFromURL
Re: NSError in NSDocument readFromURL
- Subject: Re: NSError in NSDocument readFromURL
- From: Konrad Windszus <email@hidden>
- Date: Tue, 14 Jul 2009 00:21:28 +0200
Did someone already open an documentation bug at apple regarding this
issue?
"If not successful, the method returns nil after setting outError
to point to an NSError that encapsulates the reason why the
document could not be instantiated."
Operative word being "an" NSError. Funny enough, it ignores your
reason and never gives one itself. It just says it "could not be
opened." :-D
I'm tempted to call this an API bug, though, before I file
documentation bugs. I would expect it to work as the documentation
suggests - if I set an error, display that error, else why the hell
are you asking me to supply one?
Debate?
An NSError's description is supposed to say something like: "You
can't A because B." Its failure reason is supposed to say "B." (yes,
the same "B" that's in the description). Its recovery suggestion is
supposed to say "You can C instead." There's never any API contract
about which of these strings the *caller* of a NSError-returning
method is going to use. NSDocumentController seems to me to be
within its rights to display its own description, annoying as that
may be.
As the OP demonstrated (and I didn't realize this before he did),
NSDocumentController apparently *will* display the failure reason
("The document X could not be opened. B."). So you have a way of
customizing the alert, so long as you don't mind the canned part
talking about "documents" being "opened". If you don't like it, you
have the display-your-own-alert-and-return-cancel alternative.
But I agree that this is common enough topic that it should be
documented more fully.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden