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

时间:2012-11-16 13:51:54

标签: cocoa ios5 core-data restkit nsmanagedobject

大家好我已经用iOS5构建了几个应用程序,现在我即将潜入CoreData。 什么是正确的方法?很多指南都是指一个旧的XCode版本,在项目创建向导中,开发人员可以选择“使用CoreData”。这样您就可以自动获得对NSManagedObjectContext的引用。看来此选项不再存在。 所以现在怎么办?我已经阅读了有关UIManagedDocument的内容,但我没有了解它的相关性:persistentStoreCoordinator,managedObjectModel和managedObjectContext。 此外,我需要使用RestKit完成所有这些工作,这更加混淆了什么是正确的方法。 我需要有人解释或指出我正确的方向。 感谢

2 个答案:

答案 0 :(得分:1)

user1170896,

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

安德鲁

答案 1 :(得分: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;