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

Core data 如何从核心数据中读取和使用整数值,core-data,xcode5,Core Data,Xcode5,我会重新提出这个问题: 我使用核心数据,并将具有属性的实体定义为:attribute1为Integer16 我阅读了属性: NSArray *objects = [objectContext executeFetchRequest:request error:&error]; int integer1 = [[objects valueForKey:@"attribute1"] integerValue] 在最后一句话中,应用程序崩溃 目标是实现算法: int integer2 =

我会重新提出这个问题:

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

我阅读了属性:

NSArray *objects = [objectContext executeFetchRequest:request error:&error];

int integer1 = [[objects valueForKey:@"attribute1"] integerValue]
在最后一句话中,应用程序崩溃

目标是实现算法:

int integer2 = 0;

integer2 = integer2 + integer1;
也许我必须和NSNumber,NSInteger,NSInteger一起工作

真的,我不明白这么简单的东西怎么会有这么复杂的C目标

无可奉告

原始问题:

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

我已将属性为countStep的实体定义为整数16。在该属性中,我保存了一个值(即10)

稍后,我想读取该值:

int integerVal1 = [[objects valueForKey:@"countStep"] integerValue];
为了实现算术运算:

int integerVal2;

integerVal2 = integerVal2 + integerVal1
但在源代码行中:

int integerVal1 = [[objects valueForKey:@"countStep"] integerValue];
应用程序崩溃,并显示错误消息:

*由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayI integerValue]:发送到实例的选择器无法识别

我试过几种选择

@property (nonatomic, assign) int integerVal2;
或:

问题是相同的:将dictionary对象转换为基本元素int(integer)以计算算术运算:integerVal2=integerVal2+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]

错误显示
countStep
是一个数组。它是一个数组吗?您如何设置该值?您是否向实体添加了自定义代码?countStep是核心数据中属性的名称。问题是:我如何实现核心数据中保存的整数(即10、5或其他)的求和?您所描述的整数16是正确的。但是运行时说您没有这样做-因此出现了例外。我将重新解释这个问题。很抱歉误会。您如何设置号码并将其保存到核心数据?非常感谢。这就是我的问题:如何将返回的数组值(调用valueForKey)转换为原语值(int)。因为当我看到调试区域时,我看到值(即3)四舍五入为“()”。重复一遍,非常感谢Wain先生!工作完美!关键是:id myEntity=objects[0];很遗憾,我没有找到关于这句话的任何信息,我已经失去了2天。重复一遍,非常感谢!
NSArray *objects = [objectContext executeFetchRequest:request error:&error];
id myEntity = objects[0]; // put protection around this...
int integer1 = [[myEntity valueForKey:@"attribute1"] integerValue]