Cocoa 什么';这是使用iOS 5和RestKit安装CoreData应用程序的正确方法

Cocoa 什么';这是使用iOS 5和RestKit安装CoreData应用程序的正确方法,cocoa,ios5,core-data,restkit,nsmanagedobject,Cocoa,Ios5,Core Data,Restkit,Nsmanagedobject,大家好,我已经用iOS5构建了几个应用程序,现在我要深入研究CoreData。 正确的方法是什么?很多指南都提到了旧的XCode版本,开发者可以在项目创建向导中选择“使用CoreData”。这样,您将自动获得对NSManagedObjectContext的引用。该选项似乎已不存在。 那现在呢?我读过UIManagedDocument,但不知道它与persistentStoreCoordinator、managedObjectModel和managedObjectContext有什么关系。 此外,

大家好,我已经用iOS5构建了几个应用程序,现在我要深入研究CoreData。 正确的方法是什么?很多指南都提到了旧的XCode版本,开发者可以在项目创建向导中选择“使用CoreData”。这样,您将自动获得对NSManagedObjectContext的引用。该选项似乎已不存在。 那现在呢?我读过UIManagedDocument,但不知道它与persistentStoreCoordinator、managedObjectModel和managedObjectContext有什么关系。 此外,我还需要使用RestKit来完成所有这些工作,这就增加了关于正确方法的更多困惑。 我需要有人向我解释或指出正确的方向。 谢谢

用户1170896

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


Andrew一个月前才开始使用RestKit/Core数据。我读了很多教程,或多或少对这些东西感到舒服。我读过的最好的教程之一是:

创建新项目时(例如在主详细视图项目模板中)的“使用核心数据”选项在使用RestKit时没有意义。例如,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访问堆芯数据中存储的数据:

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