使用 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