核心数据整数值存储到文本字段

时间:2015-12-14 06:54:29

标签: ios core-data

在Person实体内部的核心数据中,我有一个属性phoneNumber,其类型I已设置为整数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位。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

即使Core Data模型中的值是整数,Person实体也需要一个数字对象作为电话号码。

首先将整数转换为NSNumber,然后将其分配给人的phoneNumber属性:

NSNumber *phoneNumber = [NSNumber numberWithInteger:[numberString integerValue]];
[newPerson setValue:phoneNumber forKey:@"phoneNumber"];