ios - 核心数据整数值通过文本字段存储

标签 ios core-data

在 Person 实体的核心数据中,我有一个属性 phoneNumber,我已将其类型设置为 64 位整数。在 ViewController.m 文件中,我正在使用这段代码

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context];
NSManagedObject *newPerson = [[NSManagedObject alloc]initWithEntity:entityDescription insertIntoManagedObjectContext:context];
NSString *numberString = [self.phoneNumber text];
NSInteger phoneNumber = [numberString integerValue];
[newPerson setValue:self.firstName.text forKey:@"firstName"];
[newPerson setValue:self.lastName.text forKey:@"lastName"];
[newPerson setValue:phoneNumber forKey:@"phoneNumber"];

其中 firstName、lastName 和 phoneNumber 是文本字段。但最后一行给出错误

Implicit conversion of 'NSInteger' (aka 'long') to 'id _Nullable' is disallowed with ARC

如果我使用 self.phoneNumber.text 我认为该值不会存储在数据库中,因为那里的类型是 64 位整数。执行此操作的正确方法是什么?

最佳答案

当您在实体模型中将 attribute 类型设置为 integar32integer64 时,当您生成模型类时属性设置为 NSNumber,因此您应该将您的值转换为 NSNumber,然后将其设置为您的模型对象。像下面这样。

NSNumber * phoneNumber =  [NSNumber numberWithInt:[[self.phoneNumber text] intValue]]] ;
[newPerson setValue: phoneNumber forKey:@"phoneNumber"];

关于ios - 核心数据整数值通过文本字段存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34261261/

相关文章:

iphone - 我尝试使用 setReturnsDistinctResults 通过 Core Data 获得不同的结果,但无法使其正常工作

objective-c - 使用 NSOperationQueue 作为后进先出堆栈?

ios - 如何在 iOS 的 didselectrowatindexpath 中触发按钮操作方法, objective-c

ios - NSUserDefaults 与 SegmentedControl 混淆

macos - 使用 NSPersistentDocument 创建 'Documents'

ios - 如何在保存托管对象上下文时避免 UI 卡住?

ios - 更改非事件选项卡栏图标的颜色

ios - AVCaptureMetadataOutput、rectOfInterest扫描外

iphone - 谷歌分析不工作 iOS

xcode - 核心数据 : In XCode how can I set my attribute to be unique?