我知道有许多类似问题的主题,但我无法找到解决我问题的主题。
我想要存放一个高分的plist
高分的每个条目必须有两个元素
NSString *和int。
我想存储前20个高分(成对的字符串和整数)并在plist中执行。
我从:
开始NSMutableArray *arr = [[NSMutableArray alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"Mylist" ofType:@"plist"]];
我希望数组的第0项是字典,我可以在其中插入键值对
(string,int)
我该怎么做?
答案 0 :(得分:1)
您需要注意:mutability选项,因为您的方法可能会返回不可变数组...
使用writeToFile:...
或writeToURL:...
方法
答案 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];