使用 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。您应该使用NSEntityDescriptioninsertNewObjectForEntityForName: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 托管对象上下文为零

使用 Restkit 为 NSManagedObject 类创建实例

通过 NSURLconnection 为 ios Web 服务使用 Web 服务库(RESTKIT/ASIHTTP 请求)的优点

RestKit 不喜欢为 POST 响应映射不同的对象

使用自省restkit的对象映射

RestKit 对象映射将 ID 映射为完全不同的负数