使用 Restkit 为 NSManagedObject 类创建实例
Posted
技术标签:
【中文标题】使用 Restkit 为 NSManagedObject 类创建实例【英文标题】:Creating instance for NSManagedObject Class using Restkit 【发布时间】:2012-08-26 04:39:40 【问题描述】:如何为使用核心数据模型创建的 NSmanagedObject 类创建一个实例。我有另一个类,它是 NSObject 的子类。我想为 NSManageObject 类创建一个对象。我怎样才能做到这一点。是否像我们为 NSobject 类创建实例的正常方式一样
ClassB.m //ClassB是NSObject类
ClassA *obj = [[ClassA alloc]init]; //ClassA is NSmanagedObject Class
或者有什么办法吗???
我没有使用此代码(Apple Docs) 来创建实例
NSManagedObject *newEmployee = [[NSManagedObject alloc]
initWithEntity:employeeEntity
insertIntoManagedObjectContext:context];
我想知道,有没有办法使用restkit创建一个类似于上面代码的对象
注意:我正在使用 Restkit 创建对象实例和映射。
谢谢
【问题讨论】:
看看《Core Data Programming Guide》中的“Creating and Deleting Managed Objects”就知道了。 感谢您的建议。但我正在使用 restkit 进行对象映射。所以我需要知道如何使用 Restkit 模型创建实例 那么你应该更准确地陈述你的问题。这个问题没有提到 RestKit。 @Martin:我已经编辑了我的问题 【参考方案1】:使用 Restkit,您可以在要创建的类上使用静态方法对象。在你的例子中
[ClassA object]
会返回一个实例化的对象。
请务必导入正确的标题:
#import <RestKit/CoreData.h>
而不是
#import <CoreData/CoreData.h>
【讨论】:
这个对象会发生什么?那么是不是直接在核心数据模型中呢? 你会得到它的引用。它只是 id object = [[self alloc] initWithEntity:[self entity] insertIntoManagedObjectContext:[NSManagedObjectContext contextForCurrentThread]]; 的包装器。返回[对象自动释放];所以你仍然应该明确地保存它(这就是我所做的) 好的,谢谢。我目前正在使用 RestKit,我认为有时获取我需要的信息并不容易...... @Jeroen Coupé:我可以将 NSManagedClass 对象作为参数传递吗?我只想使用同一个对象来发送和接收数据。 RestKit 0.11 版本中似乎不存在该对象方法。【参考方案2】:不,您不想通过 alloc/init 实例化 NSManagedObject。您应该使用NSEntityDescription
的insertNewObjectForEntityForName:inManagedObjectContext:
。比如:
ClassA *obj = [NSEntityDescription
insertNewObjectForEntityForName:@"ClassA"
inManagedObjectContext:context]; // ClassA is NSManagedObject Class
为了有一个NSManagedObjectContext
,你还需要一个NSPersistentStoreCoordinator
和一个NSManagedObjectModel
,等等。是的,这很复杂。 This book 真的帮助我了解 Core Data;我全心全意地推荐它。
请参阅Core Data Programming Guide section on creating and deleting managed objects。实际上,当您在那里时,我建议您阅读整个Core Data Programming Guide。 Core Data 令人惊叹且功能强大,但也很复杂;你真的很想知道你在做什么。
更新:您使用 RestKit 的事实可能会改变我上面所说的内容。可能是 RestKit 有自己的 API 来做 Core Data 的东西,我不确定。也许检查文档。
【讨论】:
以上是关于使用 Restkit 为 NSManagedObject 类创建实例的主要内容,如果未能解决你的问题,请参考以下文章
使用 Restkit 为 NSManagedObject 类创建实例
通过 NSURLconnection 为 ios Web 服务使用 Web 服务库(RESTKIT/ASIHTTP 请求)的优点