我有一个我正在迭代的NSDictionary,我将数据保存到核心数据,如下所示,
NSDictionary *details = [valueDict objectForKey:@"shipment_master"];
for (NSDictionary *response in details) {
NSManagedObjectContext *context = [self managedObjectContext];
// remove all rows
[context performBlockAndWait:^{
// add new row(s)
NSManagedObject *master = [NSEntityDescription insertNewObjectForEntityForName:@"ShipmentMaster" inManagedObjectContext:context];
NSError *error;
[master setValue:[details objectForKey:response] forKey:@"values"];
// save MOC
if ([context hasChanges]) {
(void)[context save:&error];
}
}];
}
问题是在循环nsdictionary时正在更改顺序。例如a在字典中出现b然后是c,d等,但是当我迭代并保存它时,订单正在改变,我该如何维护订单?
答案 0 :(得分:2)
NSMutableDictionary
未订购。您无法保证密钥的顺序,因为NSDictionary
不会尝试保留任何特定的顺序。要按特定顺序查看字典,您必须按所需顺序制作NSArray
个键,然后迭代并获取相应的值。
答案 1 :(得分:2)
NSDictionary是一个无序集合。说“我添加它们的顺序”没有任何意义。如果您想以特定顺序访问密钥,那么您必须在字典旁边存储数组或获取密钥,然后对它们进行排序并使用它来按顺序访问值。
答案 2 :(得分:1)
NSMutableDictionary
中没有订单如果您想使用它,您可以通过将密钥存储到NSArray
中然后迭代它并获取您想要使用的相关值来使用它。希望它适合你:)