2009-11-01 105 views
9

我是新來的iphone平臺,並創建一個應用程序,檢索一個rss提要,並顯示它在UITableView。我已經完美地完成了這個工作(或者說,我想要的方式)。我在想的是,我會將當前的供稿項目存儲在手機中,以便在獲取新供稿時初始加載它存儲的舊項目,然後解析新供稿並添加新項目並刷新TableView。我打算使用Core Data將舊數據項存儲起來,因爲這將是學習Core Data的一種好方法,它將是對Core Data的適當使用。但是,我很難學習如何使用核心數據並將其與表/數組連接起來。新的核心數據爲iphone

我已經在Google上搜索並查看了教程的stackoverflow,但還沒有找到任何解釋它的方式,我真的明白了。我們將非常感謝將Core Data添加到現有應用程序所需的全部步驟的任何解釋。完整的細節不是必需的(但也是有用的)。我只是不太熟悉SQL或以這種方式存儲數據,並且在圍繞核心數據的整個概念如何工作以及如何連接到所有內容方面遇到困難。

此外,任何更好的方法做我想要完成的東西也將不勝感激。

回答

8

存在用於基於核心數據的應用程序的Xcode模板;這些讓Core Data成爲一個很好的開端。然而,這聽起來像你想的核心數據集成到現有的應用程序,所以你需要...

  • 添加三個主要核心數據對象:管理對象上下文(MOC),管理對象模型(MOM)和持久店鋪協調員(PSC)。無論您希望核心數據是否可用,都需要訪問這些數據,無論是在您的應用程序委託中,還是在您的表視圖的控制器或數據源中,都更好。
  • 在Xcode中創建一個MOM。這將是一個類型爲.xcdatamodel的文件,它是一個對象圖,它定義了您的應用中需要的所有Core Data實體。
  • 使用NSFetchedResultsController(由Louis Gerbarg建議)從Core Data中獲取數據並將其顯示到您的表視圖中。
  • 在適當的情況下,在您現有的RSS提取和解析例程中添加代碼,以將新的Core Data對象存儲回存儲區。

一個好的開始方法就是創建一個新的Core Data應用程序並稍微玩一下;你也可以看看蘋果在這個主題上的絕佳資源,如Core Data Programming Guide和示例應用程序RecipesLocations。 (可能需要開發人員註冊。)

最後要注意的是,大部分需要添加的Core Data代碼可以直接從Xcode模板應用程序中剝離並粘貼到你的程序(這對你需要的三個核心數據對象的訪問器尤其如此)。不過,請注意不要使用你不明白的代碼。

3

如果您使用CoreData來填充UITableView,那麼您確實想使用NSFetchedResultsController而不是嘗試自行填充和同步數組。 NSFetchedResultsController的文檔包含指向幾個CoreData教程的鏈接,包括填充表視圖的onces。

1

NSFetchedResultsController仍然有點bug,需要脆弱的解決方法。在開始閱讀Books教程之前,我將從更簡單的iPhone Core Data「location」教程開始。

+0

你能更具體嗎?我記得有幾個bug在3.0中有一些相當不好的後果,但我確信NSFetchedResultsController在3.1中相當穩定和可用。還有我還不知道的突出問題嗎? – Tim 2009-11-02 22:31:26

+0

移動行時,獲取控制器引用其內部數組的中間索引。如果所述索引不再存在,則隨後重新加載部分會導致立即崩潰。 – 2009-11-03 00:07:16

1

同樣,在做什麼,我試圖完成也將欣賞

是的,這聽起來像核心數據可能是矯枉過正的應用程序的任何更好的方法。假設您的Feed項目存儲在集合對象中,您可以輕鬆使用OSX的built in serializaition

0
在其他棧溢出職位

已經注意到,但我強烈推薦的布拉格PROG書「核心數據:蘋果的Mac OS X上保存數據API」 - 最重要的是也與iPhone核心數據的應用程序;有關於創建一個iPhone應用程序的整章。

http://pragprog.com/titles/mzcd/core-data