> On 2016 May 19, at 16:13, Rick Mann <rm...@latencyzero.com> wrote:
> 
> I have a complex NSDocument with lots of files. One of those files is has a 
> .mfst extension. If the user double-clicks one of those files, I want my app 
> to create my NSDocument subclass, and then call a method on it to read the 
> contents of that file, but I don't want that to be the file it then 
> associates with the document. The actual on-disk representation is a package, 
> and can either copy the originally-opened file contents into the package, or 
> reference that file with an alias.
> 
> At some point, the user will have to specify a location for the "real" 
> document package to live. Conversely, if the user double-clicks on the real 
> document package, I want that to behave as expected.
> 
> How do I set up my Document Types and handle this scenario?

You will need two document types (CFBundleDocumentTypes) in your Info.plist, 
one for your .mfst document, and one for the “real” document (NSDocument 
subclass / package).  The .mfst should have its “role” (CFBundleTypeRole) set 
to “Reader” and will have no windows.  In its -readFromURL:ofType:error:, or 
later, it will programatically create a “real” document by invoking 
-[NSDocumentController makeUntitledDocumentOfType:error:].  Cocoa will present 
the Save dialog the user clicks File > Save.  Then make your alias or move the 
original file with NSFileManager, or if this is a Core Data document, consider 
using BSManagedDocument which has methods to read and write so-called 
“additional content” into document packages.

In the Document-Based App Programming Guide for Mac, read  > Alternative Design 
Considerations > Multiple Document Types Use Multiple NSDocument Subclasses.



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to