Ios 从CoreData到NSNumber*到NSString*

Ios 从CoreData到NSNumber*到NSString*,ios,objective-c,core-data,nsstring,nsnumber,Ios,Objective C,Core Data,Nsstring,Nsnumber,我目前拥有一个来自CoreData的对象的NSArray——其中一个属性(名为identifier)是一个NSNumber。我正在代码中进行一些比较,需要将此NSNumber转换为NSString 我已经做到了,但是我想知道这两段代码之间的区别是什么: NSNumber * arrayValueNum = [coreArray[i] identifier]; NSString * arrayValue = [arrayValueNum stringValue]; 及 出于某种原因,第二个代码段

我目前拥有一个来自CoreData的对象的
NSArray
——其中一个属性(名为
identifier
)是一个
NSNumber
。我正在代码中进行一些比较,需要将此
NSNumber
转换为
NSString

我已经做到了,但是我想知道这两段代码之间的区别是什么:

NSNumber * arrayValueNum = [coreArray[i] identifier];
NSString * arrayValue = [arrayValueNum stringValue];

出于某种原因,第二个代码段不会编译,而第一个代码段会编译

错误:

“NSString”没有可见的@interface声明选择器“stringValue”


除了
NSNumber*
值在大括号中而不是在它自己的变量中之外,它们不是相同的吗?

您可以使用
stringWithFormat
像这样直接为该
NSString
变量赋值

NSString *test = [NSString stringWithFormat:@"%@",[coreArray[i] identifier]];

您可以使用
stringWithFormat
直接将值分配给该
NSString
变量,如下所示

NSString *test = [NSString stringWithFormat:@"%@",[coreArray[i] identifier]];

这会导致在使用
[测试isEqualToString]
-
[\uu NSCFNumber isEqualToString:]:发送到实例的选择器无法识别时出错
这会导致在使用
[测试isEqualToString]
-
[\uu NSCFNumber isEqualToString:]:无法识别的选择器已发送到实例
快速问题:第二个代码段(如果您按住alt键并单击它)上的标识符是什么方法?我想,
[[(MyCoreDataClass*)coreraray[I]identifier]stringValue]
可能会起作用,或者
[(NSNumber*)[coreraray[I]identifier]stringValue]
也会起作用。问题是,
coreraray[i]
返回一个
id
对象,有些对象有一个属性/方法
identifier
,它返回一个
NSString
,这将解释错误。快速问题:第二个代码段上的
identifier
是什么方法(如果按住alt键并单击它)?我想,
[[(MyCoreDataClass*)coreraray[I]identifier]stringValue]
可能会起作用,或者
[(NSNumber*)[coreraray[I]identifier]stringValue]
也会起作用。问题是,
coreraray[i]
返回一个
id
对象,有些对象有一个属性/方法
标识符
,它返回一个
NSString
,这将解释错误。