2014-03-07 25 views
2

我正在使用核心數據並試圖遍歷我正在檢索的對象。我在Xcode中出現錯誤。如何使用Core Data迭代檢索的對象?

// Fetching Records and saving it in "fetchedRecordsArray" object 
self.fetchedRecordsArray = [appDelegate getAllPhoneBookRecords]; 

//print array 
NSLog(@"Count: %lu", (unsigned long)self.fetchedRecordsArray.count); 

for (id object in self.fetchedRecordsArray) { 
    NSLog(@"%@", object.city); 
} 

計數返回6,所以我知道在那裏的對象。我也知道「城市」是我實體中的一個屬性。我得到的錯誤是:

Property ‘city’ not found on object of type ‘const _strong id’ 

有關如何解決此問題並記錄什麼是正確返回的任何建議?

+0

與您的問題無關,但我必須說 - 調用應用程序委託來檢索模型對象是一種代碼異味。 – Abizern

回答

0

試圖改變這種

  for (id object in self.fetchedRecordsArray) { 
       NSLog(@"%@", object.city); 
      } 

      to 

      for (objectClassName *object in self.fetchedRecordsArray) { 
       NSLog(@"%@", object.city); 
      } 

注:*對象不反對 - 在for循環

4

而不是迭代對象爲什麼不迭代你的實體。

for(<your entity class> obj in self.fetchedRecordsArray){ 
    //do stuff 
} 

或者如果提取的記錄包含多種類型的實體。

for(id obj in self.fetchedRecordsArray){ 
    if([obj isKindOfClass:<you entity class>.class]){ 
    //do stuff 
    } 
    else if([obj isKindOfClass:<you other entity class>.class]){ 
    //do other stuff 
    } 
} 
0

試試這個通過對象迭代,您還可以檢查對象,在對象的實體爲對象的數組

for (NSManagedObject *obj in Objects) 
{ 

     if ([[obj entity].name isEqualToString:@"EntityName1"]) 
     { 
      do stuff... 
     } 

     else if ([[obj entity].name isEqualToString:@"EntityName2"]) 
     { 
      do stuff... 
     } 
} 

希望這有助於