0

这是我想从中获取价值的数组示例。

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"。

4

1 回答 1

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: all of the place 很快变得不可读。

于 2012-08-06T20:01:02.983 回答