使用 iOS 5 和 RestKit 设置 CoreData 应用程序的正确方法是啥

Posted

技术标签:

【中文标题】使用 iOS 5 和 RestKit 设置 CoreData 应用程序的正确方法是啥【英文标题】:What's the correct approach to setup CoreData app with iOS 5 and RestKit使用 iOS 5 和 RestKit 设置 CoreData 应用程序的正确方法是什么 【发布时间】:2012-11-16 13:51:53 【问题描述】:

大家好,我已经使用 ios5 构建了几个应用程序,现在我将深入研究 CoreData。 什么是正确的方法?很多指南是指旧的 XCode 版本,在项目创建向导中,开发人员可以选择“使用 CoreData”。这样,您将自动获得对 NSManagedObjectContext 的引用。看来这个选项已经不存在了。 所以现在怎么办?我读过关于 UIManagedDocument 的文章,但我不明白它是如何关联的:persistentStoreCoordinator、managedObjectModel、managedObjectContext。 此外,我需要使用 RestKit 完成所有这些工作,这增加了对正确方法的更多困惑。 我需要有人解释或指出正确的方向。 谢谢

【问题讨论】:

【参考方案1】:

1 个月前刚开始使用 RestKit / Core Data。我阅读了很多教程,以或多或少地熟悉这些东西。我读过的最好的教程之一是:http://mobile.tutsplus.com/tutorials/iphone/advanced-restkit-development_iphone-sdk/

创建新项目时的“使用核心数据”选项,例如使用 RestKit 时,在 Master-Detail-View 项目模板中没有意义。例如 NSPersistentStoreCoordinator 由 RKManagedObjectStore 管理。 NSManagedObjectContext 在后台自动创建。请参阅随附的示例代码以了解其工作原理。

一个简单的 RestKit 设置如下所示:

objectManager = [RKObjectManager managerWithBaseURLString:@"http://x.y.z.a"];

NSString *databaseName = @"XYZ.sqlite";
managedObjectStore = [RKManagedObjectStore objectStoreWithStoreFilename:databaseName];
objectManager.objectStore = managedObjectStore;

RKManagedObjectMapping *customerMapping = [RKManagedObjectMapping mappingForClass:[Customer class] inManagedObjectStore:objectManager.objectStore];
[customerMapping mapKeyPathsToAttributes:@"Id", @"customerid", nil];
[customerMapping mapKeyPathsToAttributes:@"Name", @"name", nil];
[customerMapping mapKeyPathsToAttributes:@"Firstname", @"firstname", nil];
customerMapping.primaryKeyAttribute = @"customerid";

//[other mappings incl. relationships]

[objectManager.mappingProvider setObjectMapping:reservationMapping forResourcePathPattern:@"/api/xyz"];

可以通过 NSFetechedResultsController 访问 Core Data 中存储的数据:

NSFetchedResultsController *fetchedResultsController;
fetchedResultsController = [Customer fetchAllSortedBy:@"firstname" ascending:YES withPredicate:nil groupBy:@"firstname"];
fetchedResultsController.delegate = self;

【讨论】:

【参考方案2】:

用户1170896,

使用 Xcode 4.5 中的 master-detail 项目,您可以选择 Core Data 选项并获取其所有样板代码。

安德鲁

【讨论】:

以上是关于使用 iOS 5 和 RestKit 设置 CoreData 应用程序的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django Rest Framework 设置 iOS Restkit

无法使用 Xcode 7.2 归档带有 RestKit v0.10.3 的 iOS 5.0 时代项目

使用 Restkit MainQueueManagedObjectContext 的奇怪崩溃 - EXC_BAD_ACCESS

对 RestKit iOS 应用程序的在线和离线支持

我可以使用 RestKit 和 Realm.io 吗?

iOS:RESTKit 与 CoreData 同步数据