This is bad. Do you/we have any idea why this magically started working? Sent from my iPad
On Sep 22, 2014, at 1:07 PM, Charles Jenkins <cejw...@gmail.com> wrote: > Well, thank you to anyone who spared any thought for this problem. After I > added the test below, with reconstitutedStructureDict and reconstitutedProj, > I discovered that everything started working and the files could be written > to and read from disk without error. Then I was able to go back and delete > the “reconstituted” test lines, and everything still works. I have no > explanation. > > -- > > Charles > > > On Sunday, September 21, 2014 at 19:10, Charles Jenkins wrote: > >> Just as a test, I changed my writer method to immediately try to interpret >> the JSON data and reconstitute the project’s data: >> >> let structureDict = theProject.getStructureDictionary() >> let jsonData = NSJSONSerialization.dataWithJSONObject( structureDict, >> options: nil, error: outError ) >> if let reconstitutedStructureDict = >> NSJSONSerialization.JSONObjectWithData( jsonData!, options: nil, error: >> outError ) as? NSDictionary { >> var reconstitutedProj = >> DocumentNode.readFromWrapperViaStructureDictionary( parentWrapper: >> theFileWrapper!, dictionary: reconstitutedStructureDict ) >> } >> >> All this works: reconstitutedStructureDict is a copy of structureDict, and >> reconstitutedProj is a copy of theProject. And the JSON file that gets >> written out appears okay, so my problem seems to be that >> NSFileWrapper.regularFileContents isn’t returning usable data. >> >> — >> >> Charles Jenkins >> >> >> On Friday, September 19, 2014 at 11:45 AM, Charles Jenkins wrote: >> >>> My document structure is a file wrapper containing a bunch of RTF documents >>> and a file called structure.json which describes how they relate to one >>> another. >>> >>> I write out the structure file like this: >>> >>> let structureDict = theProject.getStructureDictionary() >>> let jsonData = NSJSONSerialization.dataWithJSONObject( structureDict, >>> options: nil, error: outError ) >>> >>> writeFileToWrapper( >>> parentWrapper: theFileWrapper!, >>> filename: structureFileName, >>> data: jsonData, >>> err: outError >>> ); >>> >>> >>> I’m not including the bodies of getStructureDictionary() or >>> writeFileToWrapper() because they seem to work just fine. The >>> structure.json file appears in my output package, and if I open it using >>> TextWrangler, I see exactly the JSON content I expect, stored in UTF8 >>> encoding. >>> >>> The thing is, my app can’t read it back in. Here’s the function that’s not >>> working: >>> >>> override func readFromFileWrapper( >>> parentWrapper: NSFileWrapper!, >>> ofType typeName: String!, >>> error outError: NSErrorPointer >>> ) -> Bool >>> { >>> if let fw = parentWrapper.fileWrappers[ structureFileName ] as? >>> NSFileWrapper { >>> if let data = fw.regularFileContents? { >>> let debug: String = NSString( data: data, encoding: >>> NSUTF8StringEncoding ) >>> let obj: AnyObject? = NSJSONSerialization.JSONObjectWithData( data, >>> options: nil, error: outError ) >>> if let structureDict = obj as? NSDictionary { >>> var proj = DocumentNode.readFromWrapperViaStructureDictionary( >>> parentWrapper: parentWrapper, dictionary: structureDict ) >>> theProject = proj >>> theFileWrapper = parentWrapper >>> return true >>> } >>> } >>> } >>> return false; >>> } >>> >>> >>> I expect I’ll find bugs in readFromWrapperViaStructureDictionary() if I >>> ever call it, but I never get that far. >>> >>> With Swift and Xcode, stepping line-by-line through code it a bit confusing >>> because the current line indicator bounces all around, sometimes appearing >>> on lines of code already executed. But to be best of my belief, my problem >>> is that obj can’t be converted to an NSDictionary. I inserted the debug: >>> String to see what’s read from the file, and it comes back as garbage. >>> >>> Is calling regularFileContents the wrong way to read up my JSON file? >>> >>> — >>> >>> Charles Jenkins > > _______________________________________________ > > 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/zav%40mac.com > > This email sent to z...@mac.com _______________________________________________ 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