我正在开发一个项目,我有一个表视图,目前通过返回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书。非常感谢。
答案 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