使用WebService更新TableView并保存到CoreData

时间:2010-05-18 01:34:28

标签: xml cocoa tableview core-data

我正在开发一个项目,我有一个表视图,目前通过返回XML的Web请求进行更新。我实施了

-(int)numberOfRowsInTableView:(NSTableView*)tv

 -(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn*)tableColumn row:(int)row

在我的XML解析类中,并使用从服务器下拉的数据更新表。

我想保存使用Core Data下拉的数据,以便保存/加载表格。然后在应用程序启动时,在发出Web请求时,它将只添加尚未存在的数据。 (XML按发布日期排序,因此稍后我将检查哪些发布日期未从Core Data存储中加载,并且仅加载更新的条目。)

我将如何实施此功能?我是一个非常新的Cocoa开发人员,但已经阅读了整本Hillegass书。非常感谢。

2 个答案:

答案 0 :(得分:2)

您在这里谈论的有两件大事:解析XML和使用Core Data进行持久化。

(1)我在NSXMLParser周围使用this wrapper读取XML文件取得了一些成功。我听说但没有使用过更新的库,但这可能为你提供了一个起点。链接的文章对使用情况非常透彻。

(2)您想要对Core Data做的第一件事就是创建一个新的数据模型。从那里,您可以创建一个模型类(具有@dynamic属性),以通过Core Data轻松地与您的数据库交互(使用NSManagedObjectContext及其类似的东西)。你可以得到一个温和的介绍here,或者沿着here稍微跳一下。

实施核心数据非常重要,特别是对于较新的开发人员。我鼓励你在出现特定主题时寻找教程。

答案 1 :(得分:1)

我和你现在在同一条船上 - 我只是在学习Cocoa,我读过Hillegass的书,而我正在构建一个源自Web服务的Core Data应用程序。我已经想出如何让我的应用程序成功地从Web服务填充表视图,但我不知道我正在做的方式是正确的方法还是最佳实践。这是我做的:

我创建了一个Core Data模型,其属性与来自Web Service的实体相同。在Interface Builder中,我创建了一个表视图,并设置了表列和Core Data属性之间的绑定。当应用程序启动时,我从Web服务中下载数据,遍历项目并创建新实体。然后,表视图会自动识别新数据并自行填充。

Core Data book from Pragmatic Programmers以及这个问题都帮助了我: JSON to Persistent Data Store (CoreData, etc.)

我还没有处理同步问题(添加新项目,更新现有项目),但是当我这样做时,我将这个文档添加为书签: http://developer.apple.com/Mac/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html#//apple_ref/doc/uid/TP40003174