这是我希望从中获得价值的数组样本。
coursesArray = [[NSMutableArray alloc]init];
// AR111:
[coursesArray addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys:
@"MUR",@"courseType",
@"AR111",@"courseCode",
@"Arabic Communication Skills (I)",@"courseName",
@"3",@"creditHours",
@"",@"preRequisites",
@"63.000",@"coursePrice",
@"6.000",@"courseEPP",
@"This course aims at .",@"courseDetails",
nil]];
这是我获取价值的代码。
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
int i = 0;
for (i = 0; i < [coursesArray count] ; i++) {
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"];
}
如果有人可以帮我纠正以下部分:
[newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"];
这些值将添加到核心数据forKey:@“courseName”。
答案 0 :(得分:3)
[newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"];
我认为这是在一行上放置过多代码的经典案例。我不指望这实际上会编译?
让我们尝试将其细分为几个部分。我把代码的中心部分取出来并用XX替换它:
[newManagedObject setValue:XX forKey:@"courseName"];
这一点看起来很好。 setValue:forKey
是托管对象的有效方法。
XX是:
[YY forKey:@"courseName"]
目前尚不清楚这是否正确,但看起来不太好 - 方法名称似乎不正确。
YY是:
[coursesArray objectAtIndex:i]
这很好,它返回一个可变字典。但字典不实现名为forKey:
的方法。他们做实现了一个名为objectForKey:
的方法,这就是你想要的。
因此,您的更正行应为:
[newManagedObject setValue:[[coursesArray objectAtIndex:i] objectForKey:@"courseName"] forKey:@"courseName"];
如果您正在编写大量这样的代码,那么具有保存数据成员属性的自定义对象会突然变得更有意义。 forKey:很快就会变得难以理解。