【问题标题】:Coredata integration into existing application problem iphoneCoredata集成到现有应用程序问题iphone
【发布时间】:2023-03-23 13:56:01
【问题描述】:

我正在将 coredata 集成到我现有的应用程序中,如 http://wiresareobsolete.com/wordpress/2009/12/adding-core-data-existing-iphone-projects/ 中所述。

我在插入数据时遇到问题。我的数据没有插入到以下实体中。

我正在将 coredata 框架导入到编辑类中。

@interface Editorial : NSManagedObject {
    NSInteger id;
    NSString *type;
}

@property (nonatomic, assign) NSInteger id;

@property (nonatomic, retain) NSString *type;

我在 Editor.m 中写道:

@implementation Editorial

@synthesize id, type;

在我的 .xcmod​​el 中,Editorial 也是 NSManagedObject 的子类,并具有相应类型的上述变量。

我想我遗漏了一些非常明显的东西。但我不明白。一般在使用coredata时,如果在项目开始时创建,它会自动插入属性,并且它们不在接口中声明,而是用@dynamic合成。但是在后期集成coredata的时候,是不是应该按照coredata为我们创建的方式创建对应的类呢?

编辑:这就是我为编辑对象插入值的方式。

   self.managedObjectContext = appDelegate.managedObjectContext;

    newEditorial = (Editorial *)[NSEntityDescription 
                                             insertNewObjectForEntityForName:@"Editorial" 
                                             inManagedObjectContext:self.managedObjectContext];

    strTitle = [NSString stringWithFormat:@"%@",[object valueForKey:@"eletitle"]];
    [newEditorial setEletitle:[NSString stringWithFormat:@"%@", strTitle]];
    [newEditorial setElecompany:[NSString stringWithFormat:@"%@", strTitle]];   // CRASHING HERE

    [self saveAction];

另一件事是它在所示行的第二个字符串插入时崩溃。我来了

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSManagedObject setElecompany:]:无法识别的选择器在此行发送到实例 0x4658800”。

NSString *eleCompany 存在于指定的 coredata 实体和类中。 strTitle 也包含字符串,而不是将其分配给 eleTitle 和 eleCompany,它们都是字符串,存在于类和 coredata 实体中。

有人可以帮忙吗?

这真的很紧急。

提前感谢。

【问题讨论】:

    标签: iphone core-data


    【解决方案1】:
    1. NSManagedObject 实例可能不包含 NSInteger 属性 - 您可能打算使用 NSNumber 代替,这是一种可以在 Core Data 中序列化的 Core Foundation 对象类型.

    2. idkeyword 并且很可能保留。尝试以不同的方式命名您的 NSNumber 属性。

    3. 使用新属性和关系更改更新模型后,您将总是需要修改或重新创建托管对象的头文件和实现文件。

    【讨论】:

    • 对于 NSInteger 值,我采用了其对应的十进制类型[如果我错了,请纠正我。根据我的信息,对于 NSNumber,它是 Int32]。即使在将 type 更改为 nsnumber 并且在这两个位置上,问题仍然存在。我正面临着专门针对字符串的插入问题。另外,请检查我编辑的问题。谢谢。
    • 每次更改模型时,都需要重新制作相应的头文件和实现文件。我建议您让 Xcode 为您执行此操作,因为在手动编辑时很容易忽略属性或关系属性。
    • “让 Xcode 为你做这件事”是什么意思?由于我将 coredata 集成到我现有的应用程序中,因此我需要自己创建 managedObject 类。我认为我在创建类及其与 coredata 的连接时出错了,否则我已将 coredata 正确集成到我的项目中。这真的在吃我。是否有任何好的教程可以指导完成此问题所需的步骤?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2013-04-05
    相关资源
    最近更新 更多