我试图将分数(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返回正确的路径。但阵列没有得到任何物品。
答案 0 :(得分:3)
如果您使用NSKeyedArchiver
创建文件,则需要使用NSKeyedUnarchiver
重新读取该文件。
如果您想使用[[NSMutableArray alloc] initWithContentsOfFile:...
来读取该文件,则应使用[data writeToFile:path atomically:YES];