Difficulty loading integer from Core Data
我有一个整数存储在我的 core data 中并设置为类型 integer 32。我可以很好地读写 core data 并且文本和日期等一切都很好。但我似乎对整数值有困难。
实体是 Status,我正在尝试检索 lastMessageDate 和 lastMessageID 字段。在这个实体中只会有一个记录。日期检索正常,但整数不检索。
1
2 3 4 5 6 |
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@”Status”];
NSError *error = nil; self.updateStatus = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; NSDate *lastSavedMessageDate = [[self.updateStatus objectAtIndex:0] lastMessageDate]; |
检索到的不是实际存储的数字。我想这可能与指针有关,但无论我尝试什么,我似乎都无法获得实际存储的数字。
一个相关的问题是当我试图保存到这个字段时。日期保存得很好,但包括整数保存我得到一个错误:
1
2 3 4 5 6 7 |
for (NSManagedObject *updatedRecord in [self updateStatus])
{ [updatedRecord setValue:now forKey:@”lastMessageDate”]; [updatedRecord setValue:newMessageID forKey:@”lastMessageID”]; } NSError *errorUpdate; [context save:&errorUpdate]; |
Implicit conversion of ‘NSInteger’ (aka ‘int’) to ‘id’ is disallowed
with ARC
有什么建议吗?
- 我会使用 NSNumber stackoverflow.com/questions/9886160/…对于整数基本相同
- lastMessageID 将作为 NSNumber 返回,尝试 [[[self.updateStatus objectAtIndex:0] lastMessageID] integerValue];
- NSNumber 应该解决你的问题,我认为 NSInterger 是一个 Interger 64,而不是 32:developer.apple.com/library/mac/documentation/Cocoa/Conceptu??al/…
- @JamesP – 完美……成功了谢谢
正如其他人所说,您需要使用 NSNumber 这样做的原因是Core Data 只处理整数是原语的对象。当您在 Core Data 实体中填充任何形式的数字值时,它必须是 NSNumber ,使用新的自动装箱功能非常简单。
将 NSNumber 转换为原语就像在对象上调用正确的方法一样简单,在这种情况下它将是 -intValue.
来源:https://www.codenong.com/32187004/