我正在从我的核心数据存储中检索一个实体并将其放入一个名为fetchedObjects
的数组中。我正在尝试从NSNumber
获取整数值,但我的应用程序崩溃了。
以下是代码:
NSNumber *idioma = [fetchedObjects valueForKey:@"idioma"];
如果像这样做NSLog()
:
NSLog(@"idioma = %@", idioma);
我得到类似idioma = ( 0 )
但是,如果我尝试在NSNumber
上调用intValue,应用程序崩溃了。这是一个例子:
if ([idioma intValue] > 0 ) {
//do something
} else {
//else do something else
}
错误消息和堆栈跟踪顶部:
2014-04-30 21:50:15.100 Mensagens 2[18797:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI intValue]: unrecognized selector sent to instance 0x8f31080' *** First throw call stack: ( 0 CoreFoundation 0x01b5d1e4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x018dc8e5 objc_exception_throw + 44 2 CoreFoundation 0x01bfa243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 3 CoreFoundation 0x01b4d50b ___forwarding___ + 1019 4 CoreFoundation 0x01b4d0ee _CF_forwarding_prep_0 + 14 5 Mensagens 2 0x000034fd -[ViewController logMensagem] + 1645 6 Mensagens 2 0x00002da0 -[ViewController viewDidLoad] + 112 7 UIKit 0x006bb33d -[UIViewController loadViewIfRequired] + 696 8 UIKit 0x006bb5d9 -[UIViewController view] + 35
这就是我设置“idioma”的方式
NSNumber *number = [NSNumber numberWithInteger:lingua]; // lingua is a NSInteger
[entitie setIdioma:number];
答案 0 :(得分:2)
看起来你有一个带有NSNumber的NSArray,但是你试图像NSNumber那样访问它。这一行:
NSNumber *idioma = [fetchedObjects valueForKey:@"idioma"];
应该是:
NSNumber *idioma = [[fetchedObjects valueForKey:@"idioma"]objectAtIndex:0];