【问题标题】:Conversion issue from NSNumber to NSString从 NSNumber 到 NSString 的转换问题
【发布时间】:2014-03-22 14:52:57
【问题描述】:

我正在解析来自 JSON 网络服务的数据并将其添加到数据库中,因此当我插入一个 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 ;

谁能解释一下?

【问题讨论】:

  • 我认为将电话号码表示为 int 不是一个好主意。另外,我认为通过 intValue 方法从 NSString 获取 int 不是一个好主意,这显然是一个电话号码。
  • 我不知道您为什么会得到这个答案,但是在将 NSNumber 转换为字符串之前,无需将其转换为 int。你可以这样做,[NSString stringWithFormat:@"%@", user.telephone]。如果你登录 user.telephone,你会得到什么?
  • 您的电话财产怎么样?
  • 比 CouchDeveloper 强一点:试图将电话号码表示为 int 是一个垃圾想法。我的电话号码以 "+44 (1" “(1234)”的意思是“区号是1234,所以拨区号前面的数字后跟1234,除非你拨的是国家代码,或者你的区号也是1234”。
  • 只是补充一点,如果服务器的人比客户端的人聪明一点,那么电话号码首先会以字符串的形式出现,而整个转换过程都是无稽之谈。

标签: ios objective-c json nsstring nsnumber


【解决方案1】:

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

 NSString *telephoneString = [user.telephone  stringValue];

问题可能是因为您用于变量 patient.telephone 的数据类型

【讨论】:

    【解决方案2】:

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

    原因

    1. 如果电话号码以零开头,则 NSNumber 将删除该零,因为它没有任何值(例如: 00123456789 将是 123456789,这将导致错误数据)
    2. 您将无法通过添加“+”和“-”来显示电话号码,这是一种用户友好的方式(例如: +123-456-789)

    如果你可以控制的话,你真的应该让 json 将数字作为字符串返回

    【讨论】:

    • 我有控制权,但是当我更改它并更改 coredata 模型时,我得到了用于打开商店的模型与用于创建商店的模型不兼容我该如何修复它
    • 尝试从模拟器中删除应用重新创建商店
    猜你喜欢
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2023-04-08
    相关资源
    最近更新 更多