如何从核心数据读取和使用整数值



我将重新定义这个问题:

我使用核心数据,并将一个具有属性的实体定义为 Integer16attribute1

我阅读了属性:

NSArray *objects = [objectContext executeFetchRequest:request error:&error];
int integer1 = [[objects valueForKey:@"attribute1"] integerValue]

在最后一句话中,应用程序崩溃。

目的是实现算术:

int integer2 = 0;
integer2 = integer2 + integer1;

也许我必须与NSNumber,NSInteger,NSUInteger合作?

真的,我不明白目标 C 怎么这么简单的事情如此复杂。

不加评论。。。

原始问题:

首先,我使用XCode 5(iOS 7)

我定义了一个实体,其属性计数步长整数 16。在该属性中,我保存了一个值(即 10)

稍后,我想读取该值:

int integerVal1 = [[objects valueForKey:@"countStep"] integerValue];

为了实现算术运算:

int integerVal2;
integerVal2 = integerVal2 + integerVal1

但在源代码行中:

int integerVal1 = [[objects valueForKey:@"countStep"] integerValue];

应用崩溃并显示错误消息:

* 由于未捕获的异常"NSInvalidArgumentException"而终止应用程序,原因:"-[__NSArrayI整数值]:发送到实例的无法识别的选择器

我已经尝试了几种选择。

@property (nonatomic, assign) int integerVal2;

或:

NSString *string = [[objects valueForKey:@"countStep"]description];
int integerVal1 = [NSNumber numberWithInteger:[string intValue]];
integerVal2 = integerVal2 + integerVal1

问题是一样的:将字典对象转换为基元元素 int(整数)以计算算术运算:整数Val2 = 整数Val2 + integerVal1

知道吗?

好的,仔细阅读你的代码...这:

NSArray *objects = [objectContext executeFetchRequest:request error:&error];
int integer1 = [[objects valueForKey:@"attribute1"] integerValue]

永远不会起作用,因为对数组调用valueForKey:会返回一个数组。因此,当您调用integerValue时,您会得到一个例外。

你应该做的是:

NSArray *objects = [objectContext executeFetchRequest:request error:&error];
id myEntity = objects[0]; // put protection around this...
int integer1 = [[myEntity valueForKey:@"attribute1"] integerValue]

最新更新