2012-08-06 70 views
0

这是我希望从中获得价值的数组的示例。iOS如何从数组中读取值

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

这是正确的'[newManagedObject setValue:[[coursesArray objectAtIndex:i] objectForKey:@“courseName”] forKey:@“courseName”];' – NamshanNet 2012-08-06 19:42:56

+0

尝试并重新写出你写的内容,使其成为一个明确的问题。就像“我怎样才能读取......并将其设置在...?” – 2012-08-06 19:58:29

回答

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:很快就变得不可读。

+1

我正要分解它,看到这个:“这是一个将太多代码放在一行上的经典案例”+1! – user523234 2012-08-06 20:02:52