我使用的保存力学:
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:self forKey:@"Save"];
[archiver finishEncoding];
[data writeToFile:filePath atomically:YES];
[archiver release];
[data release];
我用过
[[NSFileManager defaultManager] fileExistsAtPath:savePath];
[[NSFileManager defaultManager] contentsOfDirectoryAtPath:[SynchronizedData createPath] error:&error]
检查我的文件是否存在。他们确认文件存在。
但是我无法使用相同的目录路径加载文件
//NSData *encodedData = [[NSFileManager defaultManager] contentsAtPath:[SynchronizedData createPath]];
NSData *encodedData = [[[NSData alloc] initWithContentsOfFile:tempFilePath] autorelease];
if (encodedData == nil) {
NSLog(@"Save cannot open while loading!");
return nil;
}
以上编码数据,均返回nil。 (自动释放不是问题,我已经检查过了)
任何想法有什么不对?
我在previous thread中发现了类似的情况,我尝试再次保留我的tempFilePath,没关系,问题仍然存在。
我用比上面更简单的机制完成了保存。
从目录中获取NSData仍然没有解决问题。可能是由于@paxdiablo提到的Read Permission。
因此我使用“Documents”文件夹而不是“Library”。 NSData open没有错误。
答案 0 :(得分:1)
文件可以存在但仍然无法读取。您应该首先检查该文件的权限。
另外,使用initWithContentsOfFile:options:error:
变体来回复错误 - 希望能够告诉您是否存在问题。
根据你所看到的评论:
可可错误257
它似乎是权限问题。如果您查看Foundation constants,您会看到:
NSFileReadNoPermissionError = 257
表示您无权读取该文件。