2012-04-11 129 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