Objective-C类型错误来自核心数据的值

问题描述 投票:0回答:2

我的核心数据中有一个表,其中一个字段叫做userId,它是一个整数。

我成功获取并使用以下代码将其分配给id:

id userId2 = [info valueForKey:@"userId"];

info是我的NSManagedObject,userId2是id。现在我想将userId2转换为字符串。我读到我可以直接执行以下操作:

NSString *userId3 = userId2;

但是,当我在字符串和userId3之间执行if检查时,即使它们具有相同的值,检查也会失败。

还有一件事,Xcode说userId在调试模式下不是CFString。


我的解决方案是将两个变量转换为double:

double myDouble = [userId3 doubleValue];

还有其他建议吗?

objective-c ios xcode cocoa
2个回答
2
投票

如果userId字段是数字,它不是NSString,而是NSNumber。对于这个简单的情况,你可以使用......

NSString *userId3 = [userId2 stringValue];

... 要么 ...

NSString *userId3 = [NSString stringWithFormat:@"%d", [userId2 intValue]];

......并且应该以这种方式进行字符串比较......

if ( [str1 isEqualToString:str2] ) {
}

0
投票

NSString是一个很可爱的类,文档中有很多可用的内容,特别是当你想将数字显示为NSStrings时,

如果您不熟悉NSNumber,NSDecimalNumber等等,我会认真对待它,当涉及到int,float和double,然后处理NSNumber + NSDecimalNumber时,它会让人感到有些困惑。

我会建议尽快“扼杀它”!

© www.soinside.com 2019 - 2024. All rights reserved.