Objective c 难以将数值写入核心数据

Objective c 难以将数值写入核心数据,objective-c,core-data,nsnumber,nsinteger,Objective C,Core Data,Nsnumber,Nsinteger,我有一个名为Status的Core Data实体,它有两个属性savedMessageID作为整数32和savedMessageText作为字符串 我有一个存储在SQL数据库中的字符串,应用程序在启动时下载该字符串。数据库中的字符串分为ID和文本两部分: NSInteger *newMessageID = [the_ID_as_a_string integerValue]; NSString *newMessageText = the_message_as_a_string;

我有一个名为Status
Core Data
实体,它有两个属性savedMessageID作为整数32和savedMessageText作为字符串

我有一个存储在SQL数据库中的字符串,应用程序在启动时下载该字符串。数据库中的字符串分为ID和文本两部分:

    NSInteger *newMessageID = [the_ID_as_a_string integerValue];
    NSString *newMessageText = the_message_as_a_string;
然后我读取核心数据记录并比较ID以查看是否有变化。如果下载的ID大于存储的ID,则显示新消息。到目前为止,这一切都很顺利

然后我尝试用新下载的ID写回核心数据。。。这里已经谈论了很多,我知道:

NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Status" inManagedObjectContext:context];
NSManagedObject *updatedStatus = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context];
[updatedStatus setValue:newMessageID forKey:@"savedMessageID"]; //**error line**
[updatedStatus setValue:newMessageText forKey:@"savedMessageText"];
NSError *error;
[context save:&error];
似乎我无法将
NSInteger
写回
核心数据
。我试过写NSNumber、int等,但所有这些都是标记问题。你知道我该怎么做吗


**我得到的错误是*不允许使用ARC将指向NSInteger*'(也称为“int”)的非目标C指针隐式转换为“id”

您犯了一个错误。属性
[作为字符串integerValue的\u ID\u]
返回整数值,而不是指向整数值的指针。正确地说是:

NSInteger newMessageID = [the_ID_as_a_string integerValue];
然后设置值(预期为NSNumber):


我建议您生成严格的模型以避免类型不匹配(请参见此处的答案)。

您犯了一个错误。属性
[作为字符串integerValue的\u ID\u]
返回整数值,而不是指向整数值的指针。正确地说是:

NSInteger newMessageID = [the_ID_as_a_string integerValue];
然后设置值(预期为NSNumber):


我建议您生成严格的模型以避免类型不匹配(请参见此处的答案)。

您犯了一个错误。属性
[作为字符串integerValue的\u ID\u]
返回整数值,而不是指向整数值的指针。正确地说是:

NSInteger newMessageID = [the_ID_as_a_string integerValue];
然后设置值(预期为NSNumber):


我建议您生成严格的模型以避免类型不匹配(请参见此处的答案)。

您犯了一个错误。属性
[作为字符串integerValue的\u ID\u]
返回整数值,而不是指向整数值的指针。正确地说是:

NSInteger newMessageID = [the_ID_as_a_string integerValue];
然后设置值(预期为NSNumber):



我建议您生成严格的模型,以避免类型不匹配(请参见此处的答案)。

您收到的实际错误是什么?NSInteger只是一个int类型(在LP64 arch中是一个long),因此,如果您将其传入,核心数据如何将其解释为NSNumber地址以外的任何内容?这就是它的工作原理。。。当您从另一个上下文读取时,您得到了什么错误、保存失败了还是得到了一个您不期望的值?错误是-不允许将指向NSInteger*'(也称为“int*”)的非目标C指针隐式转换为“id”,而使用Arc则不允许。您收到的实际错误是什么?NSInteger只是一个int类型(在LP64 arch中算是一个长码)因此,如果您在中传递了该值,那么核心数据如何将其解释为NSNumber的地址以外的任何内容?这就是它的工作原理…当您从另一个上下文读取时,您会得到什么错误,保存失败,还是得到一个您不期望的值?错误是-非目标C指针到NSInteger*的隐式转换(也称为“int*)到“id”是不允许的,使用Arc时,您收到的实际错误是什么?NSInteger只是一个int类型(在LP64 arch中是一个long)因此,如果您在中传递了该值,那么核心数据如何将其解释为NSNumber的地址以外的任何内容?这就是它的工作原理…当您从另一个上下文读取时,您会得到什么错误,保存失败,还是得到一个您不期望的值?错误是-非目标C指针到NSInteger*的隐式转换(也称为“int*)到“id”是不允许的,使用Arc时,您收到的实际错误是什么?NSInteger只是一个int类型(在LP64 arch中是一个long)因此,如果您在中传递了该值,那么核心数据如何将其解释为NSNumber的地址以外的任何内容?这就是它的工作原理…当您从另一个上下文读取时,您会得到什么错误,保存失败,还是得到一个您不期望的值?错误是-非目标C指针到NSInteger*的隐式转换(又名“int*)到“id”是不允许的,因为我恐怕不明白。我想我想要的是整数值,而不是指针。numberFromInteger对我来说似乎不存在。你是说核心数据希望回写NSNumber类型吗?它是
[NSNumber numberWithInteger:]
-我的错误。看起来你没有阅读苹果的文档。NSNumber有很好的文档。如果你键入
[NSNumber number
-Xcode将建议您使用正确的方法-查看它们。CoreData希望NSNumber中嵌入数值,但如果您创建模型类,您可能会键入属性。现在就知道了-谢谢。效果不错。我确实阅读了Apple文档,但这篇文档让我感到困惑。干杯。关于生成模型类,我建议您不要o使用mogenerator而不是Xcode。它工作得非常好。恐怕我不明白。我想我想要的是整数值,而不是指针。numberFromInteger对我来说似乎不存在。你是说核心数据需要回写NSNumber类型吗?它是
[NSNumber numberWithInteger:]
-我的错误。看起来你没有阅读苹果的文档。NSNumber有很好的文档。如果你键入
[NSNumber number
-Xcode将建议您使用正确的方法-查看它们。CoreData希望NSNumber中嵌入数值,但如果您创建模型类,您可能会键入属性。现在就知道了-谢谢。效果不错。我确实阅读了Apple文档,但这篇文档让我感到困惑。干杯。关于生成模型类,我建议您不要o使用mogenerator而不是Xcode。它工作得非常好。恐怕我不明白。我想我需要整数值