-2

保存我使用过的机制:

    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。(自动释放不是问题,我已经检查过了)

有什么想法有什么问题吗?

我在上一个帖子中发现了类似的情况,我再次尝试保留我的 tempFilePath,没关系,问题仍然存在。


我以比上述更简单的机制完成了保存。

从目录中获取 NSData 的问题仍未解决。也许是由于@paxdiablo 提到的读取权限。

因此我使用“Documents”文件夹而不是“Library”。NSData 打开没有错误。

4

1 回答 1

1

文件可以存在但仍不可读。您可能应该首先检查该文件的权限。

此外,使用该initWithContentsOfFile:options:error:变体来获取错误信息——这应该会告诉你是否有问题。

并且,根据您看到的评论:

可可错误 257

看来权限是问题所在。如果您查看Foundation 常量,您会看到:

NSFileReadNoPermissionError = 257

意味着您无权读取该文件。

于 2012-11-15T08:06:10.273 回答