2012-04-11 78 views
0

NSCoding协议的默认保存位置是什么?Cocoa - NSCoding在哪里保存?

此外,有没有办法改变这样一个默认的位置,说.app文件所在的文件夹?

+3

你应该阅读实况:https://developer.apple.com/library/mac /#documentation/Cocoa/Conceptual/Archiving/Archiving.html#//apple_ref/doc/uid/10000047i – CarlJ 2012-04-11 09:03:24

回答

1

您可以直接写入根据NSCoding使用的NSKeyedArchiver

这样的文件,你的编码对象数据进行编码:

BOOL result = [NSKeyedArchiver archiveRootObject:yourObject toFile:filename]; 

随着filename,你可以选择你的文件位置(你可以将其设置为文件如果你在iOS上)。

编辑1: 如果您想在存储到NSUserDefault ...做的事:

NSData *yourObjectAsNSData = [NSKeyedArchiver archivedDataWithRootObject:yourObject]; 
[[NSUserDefaults standardUserDefaults] setObject:yourObjectAsNSData forKey:@"aKey"] 
+0

如果我使用archivedDataWithRootObject:object,该怎么办? toFile:参数是否仍然适用? 我试过了,但无法启动它。谢谢! – Kevin 2012-04-11 11:06:06

+0

试过: NSString * path = @“file”; \t [[NSUserDefaults standardUserDefaults]] setObject:[NSKeyedArchiver archiveRootObject:array toFile:path] forKey:@“savedArray”]; 这导致了一个EXC_BAD_ACCESS错误+警告我正在从一个没有投的整数指针.. – Kevin 2012-04-11 11:12:34

+1

错误的错误。您尝试将BOOL“结果”存储在NSUserDefaults中。这将会崩溃!我会更新我的答案.. – 2012-04-11 11:17:26