我有一个清单应用程序,我想保存项目的名称,是否检查。
Xcode告诉我,我保存的文件必须在这里:
2012-11-11 20:24:42.726 Checklists[1459:c07] Documents directory /Users/astanciu/Library/Application Support/iPhone Simulator/6.0/Applications/F4A90B71-A8CF-4EF8-B628-508C8B50CAD0/Library/Documentation
2012-11-11 20:24:42.728 Checklists[1459:c07] File path /Users/astanciu/Library/Application Support/iPhone Simulator/6.0/Applications/F4A90B71-A8CF-4EF8-B628-508C8B50CAD0/Library/Documentation/Checklists.plist
但是在Library文件夹中我只有Caches和Preferences。使用Finder无法在任何地方找到Checklists.plist文件。
我正在使用Mountain Lion 10.8和Xcode 4.5.2。
代码:
-(void)saveChecklistItems
{
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:items forKey:@"ChecklistItems"];
[archiver finishEncoding];
[data writeToFile:[self dataFilePath] atomically:YES];
}
-(id)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super initWithCoder:aDecoder])
{
[self loadChecklistItems];
}
return self;
}
-(void)loadChecklistItems
{
NSString *path = [self dataFilePath];
if([[NSFileManager defaultManager] fileExistsAtPath:path])
{
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
items = [unarchiver decodeObjectForKey:@"ChecklistItems"];
}
else
{
items = [[NSMutableArray alloc] initWithCapacity:20];
}
}
任何人都知道这里有什么问题? 感谢。
答案 0 :(得分:1)
您没有显示确定self dataFilePath
的代码。它似乎引用了Library/Documentation
这是一个非标准目录。
您要么在确定路径的代码中使用NSDocumentDirectory
常量而不是NSDocumatationDirectory
,要么在尝试写入之前确保该目录存在。< / p>