在目标c中写一个plist

时间:2012-04-08 20:23:54

标签: objective-c xcode plist

我知道有许多类似问题的主题,但我无法找到解决我问题的主题。

我想要存放一个高分的plist 高分的每个条目必须有两个元素
NSString *和int。

我想存储前20个高分(成对的字符串和整数)并在plist中执行。

我从:

开始
NSMutableArray *arr = [[NSMutableArray alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Mylist" ofType:@"plist"]];

我希望数组的第0项是字典,我可以在其中插入键值对 (string,int)
我该怎么做?

3 个答案:

答案 0 :(得分:1)

Property List Serialization

您需要注意:mutability选项,因为您的方法可能会返回不可变数组...

使用writeToFile:...writeToURL:...方法

完成在plist中的存储

答案 1 :(得分:1)

您可以随时拨打[arr addObject:score];,对其进行排序,然后移除最终项目,直到有10个。

要排序:

[arr sortUsingComparator:^(id firstObject, id secondObject) {
    NSDictionary *firstDict = (NSDictionary *)firstObject;
    NSDictionary *secondDict = (NSDictionary *)secondObject;
    int firstScore = [[firstDict objectForKey:@"score"] intValue];
    int secondScore = [[secondDict objectForKey:@"score"] intValue];
    return firstScore < secondScore ? NSOrderedAscending : firstScore > secondScore : NSOrderedDescending : NSOrderedSame;
}];

如果您希望分数相反,请更改“&gt;”到'&lt;'反之亦然。要将列表保持为10:

while ([arr count] > 10) {
    [arr removeLastObject];
}

从plist加载时可能需要排序。对于10分,性能命中率将是最小的,所以我建议你这样做以防万一。

答案 2 :(得分:0)

[arr insertObject:[NSMutableDictionary dictionary] atIndex:0];