拆分 nsarray 到 nsdictionary
Split nsarray to nsdictionary
我正在查询 Parse 并返回一个数组
PFQuery *query = [Points query];
[query whereKey:@"city" equalTo:[SharedParseStore sharedStore].chosenCity];
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
我想根据 Point 对象中的地区值将数组排序到字典中,以便我可以使用带有部分(地区部分名称)的表视图
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
for (Points *point in objects) {
[dict setValue:point forKey:point.district];
}
block(dict, error);
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
问题是它当然只增加了 1 个值
为了便于理解:
来自 Parse 的对象是具有以下 属性 的 Point 对象:
姓名、地区、城市
我想用地区创建一个 NSdictionary(所以我需要先从对象中收集它们,因为我不知道它们)作为键,该键的值是一个包含点的数组在那个区。
我事先不知道这些地区是什么。它们需要从 Parse 返回的对象数组中选取。
我要创建的最后一个对象是一个 nsdictionary,其中包含每个不同地区的点数组(这是关键)。
示例:
[@"districtA" : 一个包含 Point 对象的数组,这些对象在其区域 属性 中有 districtA,等等]
最好的方法是什么,因为我真的不知道该怎么做?
当您说:
时,您回答了自己的问题
I want to create a NSdictionary with the districts as a key and the
value for that key is an array with the points that are in that
district.
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSMutableDictionary *dict = [@{} mutableCopy];
for (Points *point in objects) {
// if no point for that district was added before,
// initiate a new array to store them
if (![dict containsKey:point.district])
dict[point.district] = [@[] mutableCopy];
[dict[point.district] addObject:point];
}
block(dict, error);
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
我正在查询 Parse 并返回一个数组
PFQuery *query = [Points query];
[query whereKey:@"city" equalTo:[SharedParseStore sharedStore].chosenCity];
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
我想根据 Point 对象中的地区值将数组排序到字典中,以便我可以使用带有部分(地区部分名称)的表视图
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
for (Points *point in objects) {
[dict setValue:point forKey:point.district];
}
block(dict, error);
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
问题是它当然只增加了 1 个值
为了便于理解: 来自 Parse 的对象是具有以下 属性 的 Point 对象: 姓名、地区、城市
我想用地区创建一个 NSdictionary(所以我需要先从对象中收集它们,因为我不知道它们)作为键,该键的值是一个包含点的数组在那个区。
我事先不知道这些地区是什么。它们需要从 Parse 返回的对象数组中选取。
我要创建的最后一个对象是一个 nsdictionary,其中包含每个不同地区的点数组(这是关键)。
示例: [@"districtA" : 一个包含 Point 对象的数组,这些对象在其区域 属性 中有 districtA,等等]
最好的方法是什么,因为我真的不知道该怎么做?
当您说:
时,您回答了自己的问题I want to create a NSdictionary with the districts as a key and the value for that key is an array with the points that are in that district.
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSMutableDictionary *dict = [@{} mutableCopy];
for (Points *point in objects) {
// if no point for that district was added before,
// initiate a new array to store them
if (![dict containsKey:point.district])
dict[point.district] = [@[] mutableCopy];
[dict[point.district] addObject:point];
}
block(dict, error);
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];