我有两个 plist
文件,用作数据源,在我的应用中创建 NSArray
和 NSDictionaries
。
我希望 CSV 文件的输出如下所示:
exerciseName, muscleGroup, description
Barbell Curl, Biceps, This is a bicep exercise
问题是,我需要首先组合我拥有的两个 NSDictionaries。一个有exerciseName 和muscleName,而另一个有exerciseDescription。但我需要为每个具有所有 3 个键的练习对象准备一组字典。
我使用以下代码来构建主 NSMutableArray
if (muscleArray == nil)
{
NSString *path = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"plist"];
NSMutableArray *rootLevel = [[NSMutableArray alloc]initWithContentsOfFile:path];
self.muscleArray = rootLevel;
}
NSMutableArray *arrayForSearching = [NSMutableArray array];
for (NSDictionary *muscleDict in self.muscleArray)
for (NSDictionary *excerciseDict in [muscleDict objectForKey:@"exercises"])
[arrayForSearching addObject:[NSDictionary dictionaryWithObjectsAndKeys:
[excerciseDict objectForKey:@"exerciseName"], @"exerciseName",
[muscleDict objectForKey:@"muscleName"], @"muscleName", nil]];
self.exerciseArray = arrayForSearching;
我使用以下代码来构建具有exerciseDescription 键的 NSDictionary
NSString *exerciseNameString =self.exerciseName;
NSString *path = [[NSBundle mainBundle] pathForResource:@"ExerciseDescriptions" ofType:@"plist"];
NSDictionary *exerciseDescription = [NSDictionary dictionaryWithContentsOfFile:path];
NSString *description = [exerciseDescription objectForKey:exerciseNameString];
最佳答案
您显然知道如何迭代和创建字典,那么问题是什么?
遍历exerciseArray
并向其每个字典添加练习描述。然而,这似乎效率极低,您可能应该重新考虑整个事情。为什么不以随时可用的格式将它们存储在磁盘上?
当项目的顺序很重要时使用数组。在这里似乎并不重要,那么为什么不将它们保留为 NSDictionaries 呢?如果您需要访问字典中的所有键,只需调用 allKeys
编辑:像这样吗?
NSString *path = [[NSBundle mainBundle] pathForResource:@"ExerciseDescriptions"
ofType:@"plist"];
NSDictionary *descriptions = [NSDictionary dictionaryWithContentsOfFile:path];
NSMutableArray *exercises = self.exerciseArray;
for (NSInteger i = 0; i < [exercises count]; i++) {
NSMutableDictionary *dict = [[exercises objectAtIndex:i] mutableCopy];
NSString *name = [dict valueForKey:@"exerciseName"];
NSString *desc = [descriptions valueForKey:name];
if (desc) {
[dict setValue:desc forKey:@"exerciseDescription"];
[exercises replaceObjectAtIndex:i withObject:dict];
}
[dict release];
}
关于iphone - 我需要将两个 NSArray/NSDictionaries 组合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8442221/