Ios 从CoreData到NSNumber*到NSString*
我目前拥有一个来自CoreData的对象的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]; 及 出于某种原因,第二个代码段
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
,这将解释错误。