从NSNumber到NSString的转换问题

时间:2014-03-22 14:52:58

标签: ios objective-c json nsstring nsnumber

我正在解析来自JSON Web服务的数据并将其添加到数据库中,所以当我插入一个int时,我必须将它转换为NSNumber,这样才能正常工作:24521478

NSString *telephone = [NSString stringWithFormat:@"%@",[user objectForKey:@"telephone"]];
int telephoneInt = [telephone intValue];
NSNumber *telephoneNumber = [NSNumber numberWithInt:telephoneInt];

patient.telephone = telephoneNumber;

但是当我想显示它并将NSNumber转换为NSString时我得错了数字:-30197

NSString *telephoneString = [NSString stringWithFormat:@"%d", [user.telephone intValue], nil];
labelTelephone.text =telephoneString ;

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:2)

NSNumber为每种数据类型提供专用方法。如果要将NSNumber转换为NSString,请使用:

 NSString *telephoneString = [user.telephone  stringValue];

由于您使用变量patient.telephone

的数据类型,问题可能会出现

答案 1 :(得分:0)

如果您可以控制Web服务,那么您应该将电话号码作为字符串返回JSON

<强>原因

  1. 如果电话号码从零开始,则NSNumber将删除该零,因为它没有值(例如: 00123456789将是123456789,这将是错误的数据)
  2. 您将无法通过添加“+”和“ - ”来显示电话号码(例如: + 123-456-789)
  3. 如果你能控制那个

    ,你真的应该让json将数字作为字符串返回