【发布时间】:2012-11-15 08:03:57
【问题描述】:
保存我使用过的机制:
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;
}
上面的encodedData,都返回nil。 (自动释放不是问题,我已经检查过了)
有什么想法吗?
我在previous thread找到了类似的情况,我再次尝试保留我的tempFilePath,没关系,问题仍然存在。
我使用比上述更简单的机制完成了保存。
从目录中获取 NSData 的问题仍未解决。可能是由于@paxdiablo 提到的读取权限。
因此,我使用“文档”文件夹而不是“库”。 NSData 打开没有错误。
【问题讨论】:
-
tempFilePath是什么? -
tempFilePath 与 savePath/[SynchronizedData createPath] 的路径相同
-
请NSLog tempFilePath 并检查它是否正确。
-
因为我对文件I/O方法不太了解,所以我试着把保存目录(/var/mobile/Applications/AA414ECF-337D-485A-A5D7-09159D042C64/Library/PlayerProfile/gameData .dat) 以及文件夹目录 (/var/mobile/Applications/AA414ECF-337D-485A-A5D7-09159D042C64/Library/PlayerProfile) 进入 tempFilePath 以测试我的功能。他们俩都失败了
-
保存目录是否正确,检查gameData.dat文件中的内容。我认为它是空的