【问题标题】:NSDictionary objectForKey returns wrong valueNSDictionary objectForKey 返回错误值
【发布时间】:2013-03-01 10:27:42
【问题描述】:

我正在尝试使用从我的服务器作为 JSON 响应获得的字典。当我打印字典的描述时,一切都井井有条

    Printing description of dict:
{
    category = 1;
    code = 1;
    name = "xxxx";
    pictureUrl = "xxxx";
    sessionId = xxx;
    status = 0;
}

我需要 "code" 值,当我使用 objectForKey:@"code" 来获取它时,我得到了一个错误的值:

int code = [NSDictionary objectForKey:@"code"];

在此之后我打印出代码的值及其类似 3483765348 的内容,这是非常非常错误的。

为什么会这样?

【问题讨论】:

  • int code = [[NSDictionary objectForKey:@"code"]int value];试试这样
  • @VishnuPrasath:你的答案是正确的,你是第一个,永远不要隐藏自己或害羞,继续发布作为答案。如果您的答案被否决,您将学到一些东西,如果被投赞成票,那么您的信心就会增长,这里没有什么可松懈的:)
  • @AnoopVaidya 我实际上是第一个发布的...但是由于答案很短,它会自动添加到评论中并感谢您的措辞..
  • @VishnuPrasath:再发一次,里面有一些文字。我会投票的:)

标签: ios json object key nsdictionary


【解决方案1】:

返回的对象是 NSNumber 而不是 int(它不是对象)。 如果你想要 int 值试试这个

int code = [[myDictionary objectForKey:@"code"] intValue];

【讨论】:

    【解决方案2】:

    尝试使用以下代码来解决您的问题。根据您的代码,它只返回值,您必须将其转换为 int 值。使用这段代码

    int code = [[NSDictionary objectForKey:@"code"]intValue];
    

    希望对你有帮助!!!

    【讨论】:

    • 我个人喜欢使用 NSInteger 而不是 int。你打错了int Value 而不是intValue
    【解决方案3】:

    -objectForKey: 不返回 int,而是返回一个对象(在您的情况下为 NSNumber 类型)。

    NSNumber *code = [myDict objectForKey:@"code"];
    NSInteger codeInteger = [code integerValue];
    

    【讨论】:

      【解决方案4】:
      int code = [[yourResultingDictionary objectForKey:@"code"] intValue];
      

      我认为这对你会有帮助。

      【讨论】:

        【解决方案5】:

        对象键仅针对数组值返回,因此您将使用值作为键路径。

        user_idstr = [tweet valueForKeyPath:@"properties.user_id"];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多