0

我正在尝试将一个巨大的 NSArray 保存到一个文件中,然后检索它......

NSURL *documentsDirectory = 
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory 
                            inDomains:NSUserDomainMask] lastObject];
NSURL *fileURL = [documentsDirectory 
                  URLByAppendingPathComponent:@"scorecards.dgs"];


NSMutableArray *savedArrayOfScorecards = [NSMutableArray arrayWithContentsOfURL:fileURL];
[savedArrayOfScorecards addObject:currentScoreCard];

[savedArrayOfScorecards writeToURL:fileURL atomically:YES];

NSMutableArray *mynewArray = [NSMutableArray arrayWithContentsOfURL:fileURL];

NSLog(@"%@, %@",[[mynewArray objectAtIndex:0] objectForKey:@"info"], course);

NSLog 回来了...

(null), BridgeMill

逗号两边应返回哪个 BridgeMill。但是数组不会保存...

4

2 回答 2

2

检查是否正确保存:

if([savedArrayOfScorecards writeToURL:fileURL atomically:YES])
{
    NSLog(@"Was saved");
}
else
{
    NSLog(@"Houston we have a problem...");
}

文档上:

- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)atomically

您还可以使用它来检查发生了什么:

- (BOOL)writeToURL:(NSURL )aURL 选项:(NSDataWritingOptions)掩码错误:(NSError * )errorPtr

于 2012-06-19T14:54:12.697 回答
0

什么课course

writeToURL只支持可以转换成 plist 格式的类型。这些类型是 NSString、NSData、NSArray 或 NSDictionary。

如果您的 NSArray 中有其他类型,则必须归档该数组

于 2012-06-19T15:01:46.393 回答