Core data 如何从核心数据中读取和使用整数值
我会重新提出这个问题: 我使用核心数据,并将具有属性的实体定义为:attribute1为Integer16 我阅读了属性: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 =
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]