【发布时间】:2017-01-03 22:09:07
【问题描述】:
我目前有一个来自 CoreData 的对象 NSArray - 其中一个属性(名为 identifier)是一个 NSNumber。我正在我的代码中进行一些比较,需要将此NSNumber 转换为NSString。
我已经让这个工作了,但是我想知道这两段代码之间的区别是什么:
NSNumber * arrayValueNum = [coreArray[i] identifier];
NSString * arrayValue = [arrayValueNum stringValue];
和
NSString * test = [[coreArray[i] identifier] stringValue];
由于某种原因,第二个 sn-p 不会编译,而第一个会。
错误:
“NSString”没有可见的@interface 声明选择器“stringValue”
除了 NSNumber * 值在大括号中而不是在它自己的变量中之外,它们不一样吗?
【问题讨论】:
-
快速问题:在第二个 sn-p 上
identifier使用什么方法(如果您 alt+单击它)?我想,[[(MyCoreDataClass*)coreArray[i] identifier] stringValue]可能会起作用,或者[(NSNumber *)[coreArray[i] identifier] stringValue]也可以。问题是coreArray[i]返回一个id对象,并且有一些对象具有一个属性/方法identifier返回一个NSString这可以解释错误。
标签: ios objective-c core-data nsstring nsnumber