0

這裏是另一個關於我的how to next detailView like in Mail-App的問題。在那裏,我想知道如何用數組解決這個問題。如何點擊/遍歷coreData實例

現在我正在使用coreData。我有一個名爲EntityAlphabet的實體,例如 - 5個屬性。這些屬性在這裏並不重要。 在DetailView中,我想迭代這個實體。 我該怎麼做?

我想「切換」detailView中的實體。

順便說一句:我正在用NSFetchedResultsController填充我的tableView。

回答

1

我有完全相同的情況,我只是將一個managedObjects數組傳遞給detailView。然後,根據他們在細節視圖上按下的向上/向下箭頭,我從數組中選擇適當的對象。因此,它與您提供的鏈接中的解決方案類似。要獲取對象的數組,你didSelectRowForIndexPath:方法做沿東西線以下:

// Assumes your detail view controller has a an NSArray ivar and property setup 
detailViewController.alphabetObjects=[self.fetchedResultsController fetchedObjects]; 

該解決方案是決定性的技術含量低,我實現了它,因爲我缺乏知識的時候,也就是2多年前。現在,我可以想到一些其他的方法。

  1. 將塊回調用於由NSFetchedResultsController管理的tableView。所以,當你使用didSelectRowAtIndexPath方法時,你應該爲detailViewController提供一個基本上需要indexPath的塊,並從NSFetchedResultsController返回新的managedObject。
  2. 創建一個tableViewController實現的協議。通過協議的各種方法,您可以請求新對象以及更新detailViewController UI。即查詢它是否是managedObjects集合中的第一個或最後一個對象。

希望這會有所幫助。祝你好運

+0

謝謝你的答案。這聽起來像我想要做的 - 暫時。對於一個協議,我沒有足夠的知識,本週沒有多少時間。你能告訴我如何將我的數據從coreData(EntityAlphabet)保存到一個陣列中嗎? – brush51

+0

更新了我的回答來回答你的問題。 – timthetoolman

+0

我已經用[self.fetchedResultsController fetchedObjects]試過了。在NSLog中,我得到的對象,但保存爲數組在** detailViewController.abcArray = [self.fetchedResultsController fetchedObjects]; **是**空**。在詳細視圖中,我設置了伊娃和財產,無法找到我的錯誤。再次感謝你的幫助。 – brush51

0

您可以以類似的方式使用NSFetchedResultsController。嘗試撥打- (id)objectAtIndexPath:(NSIndexPath *)indexPath。將它傳遞給您已在- (IBAction)nextRow:(id) sender中使用的newIndexPath。