无法从plist加载数组,也无法获取对象

时间:2013-05-27 17:23:04

标签: ios objective-c plist

我试图将分数(NSNumber)保存到plist文件中,然后加载它。 这是我的保存方法:

- (void)saveScore:(int)iScore;
{
    NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    NSNumber *score=[NSNumber numberWithInt:iScore];

    [archiver encodeObject:[NSArray arrayWithObject:score]];
    [archiver finishEncoding];
    [data writeToFile:[self dataFilePath] atomically:YES];

}

我检查了它并将数据保存到文件中。

这是我的加载方法:

-(void)LoadData{

    NSString *filePath = [self dataFilePath];
    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
    {
        NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
        NSNumber * number= ((NSNumber *)[array objectAtIndex:0]);
        int score=[number intValue];
    }
}

我检查过,dataFilePath返回正确的路径。但阵列没有得到任何物品。

1 个答案:

答案 0 :(得分:3)

如果您使用NSKeyedArchiver创建文件,则需要使用NSKeyedUnarchiver重新读取该文件。

如果您想使用[[NSMutableArray alloc] initWithContentsOfFile:...来读取该文件,则应使用[data writeToFile:path atomically:YES];

将数组保存到文件中