Re: Hierarchal Archiving
Re: Hierarchal Archiving
- Subject: Re: Hierarchal Archiving
- From: j o a r <email@hidden>
- Date: Tue, 28 Jan 2003 21:25:32 +0100
Implement a method to serialize & restore the objects to / from a
string:
+ (id) objectWithStringRepresentation:(NSString *) str;
- (NSString *) stringRepresentation
...and then:
- (void) saveDocumentDictionary:(NSDictionary *) docDict
toPath:(NSString *) docPath
{
NSMutableDictionary *archiveDict = [NSMutableDictionary dictionary];
NSEnumerator *enumerator = [docDict keyEnumerator];
NSString *keyStr;
while ((keyStr = [enumerator nextObject]))
{
id obj = [docDict objectForKey: keyStr];
[archiveDict setObject: [obj stringRepresentation] forKey: keyStr];
}
[archiveDict writeToFile: docPath atomically: YES];
}
(Programmed in Mail, disclaimer, disclaimer, yada, yada....)
j o a r
On Tuesday, Jan 28, 2003, at 19:21 Europe/Stockholm, The Amazing Llama
wrote:
I am programming a document that needs to save it's data to disk, like
any good document.
The data in question is a dictionary whose keys are names (NSStrings)
and whose objects are a custom class I have coded, whose instances
store arrays of arrays of numbers. How do I write this to disk? The
options I know of are:
use NSArchiver.
This has lots of drawbacks for future file formats, as well as
ordering issues. I'd rather avoid it.
use NSKeyedArchiver.
This is better than the above, but I can't figure out how to archive
the array in a clean, object-oriented way; I cannot have each of my
objects store using simple keys, because they all try to store using
the same keys. I would have to subclass NSKeyedArchiver to provide
some sort of context for each object, or have each of my custom
instances make it's own NSKeyedArchiver, store it's data in that, and
then encode the resulting NSData instead of itself. This would be a
hassle and not clean at all, in my opinion.
use NSDictionary's writeToFile:atomically:
This would be my favorite option, as it writes to clean, readable xml
that doesn't use unique IDs to identify its own parts, but I can't
figure out how to go about it. writeToFile:atomically will only store
certain types, and appears to have no extensibility in this regard.
Look at ~/Library/Safari/Bookmarks.plist to see what I'd like to be
able to do; a simple array of objects, within which I can store the
same keys over and over, without colliding into each other. Is there
any good way of doing this?
Seth A. Roby The Amazing Llama < mail or AIM me at tallama at mac
dot com>
"Life is like an exploded clown. It's really funny until you figure
out what just happened."
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.