0

我正在尝试更改对象属性的值(从 .plist 未存档),但它似乎不起作用......我现在正试图找出问题所在,我非常感谢任何帮助。

编码:

NSArray * pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * pathToSave = [[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"ownProfileArchive"];
OwnProfileData * OwnProfile = [NSKeyedUnarchiver unarchiveObjectWithFile:pathToSave];
[OwnProfile setName:[NameField text]]; // at that point, even if I change the name to a string saying "Hello!", It would always be NULL! 
NSLog(@"Name = %@", [OwnProfile Name]); // Here I can see it is always null.
[NSKeyedArchiver archiveRootObject:OwnProfile toFile:pathToSave];

现在我第一次运行它,指定的路径可能没有文件,我认为应用程序“不会介意”,因为文档说 NSKeyedArchiver 将创建一个文件,如果没有一个存在的。问题是:如果没有文件,创建对象的代码 (NSKeyedUnarchiver) 将创建一个功能对象,因为它确实返回值 o 'NULL',但我无法更改它...如果一个文件必须存在,检查文件是否存在并创建一个如果不存在的代码是什么?(我认为会涉及到 If-Else Conditional,但我不知道条件是什么以及如何创建新文件......)。

4

1 回答 1

0

我敢打赌,如果该文件不存在,那么我怀疑您没有获得 OwnProfileData 的实际实例,因此 OwnProfile 为零。检查 nil,并在这种情况下创建一个新实例(可以将其添加到您的存档中以供将来使用)。

Objective-C 允许向 nil 发送消息,所以很难看到这样的东西。试试 NSLogging OwnProfile 看看!

于 2012-07-07T18:05:10.753 回答