2012-08-06 88 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