无法从NSDictionary获取int

时间:2015-11-03 15:20:19

标签: ios objective-c nsdictionary

我只想从我的NSDictionary中获取一个字段。我想得到整数变量,但有些东西很奇怪。

我想向您展示Xcode的截图,我得到变量值。变量'价格'是整数,应该等于0,你能帮帮我吗?

enter image description here

我以这种方式创建这个词典:

NSDictionary * dict    = [[NSDictionary alloc] initWithObjectsAndKeys:
                                      [NSString stringWithFormat:@"%@",[dictionary objectForKey:@"price"]], @"price",
                                      pairedData2, @"uniqueName",
                                      [NSString stringWithFormat:@"0"],@"wasPurchased",
                                      [dictionary objectForKey:@"link"],@"videoLink",
                                      [NSString stringWithFormat:@"%@", [dictionary objectForKey:@"enable"]], @"enable",
                                      nil];

2 个答案:

答案 0 :(得分:2)

price密钥的值为NSString,其值为@"0",或者为NSNumber,其值为0。你没有提供足够的信息来知道它们中的哪一个。

在您的调试器中,您首先要做的是(我缩写):

  

po dict [@" price"]

,这给出了预期和正确的输出:

  

0

因为这是NSNumberNSString

的值

然后你做:

  

po dict [@" price"] == 0

你得到:

  

这又是正确和预期的结果。得到false,因为dict[@"price"]的结果是一个非零对象指针,并且您询问指针是否为nil== 0== nil相同})。由于您无法在字典中存储nil个对象,因此结果不会报告nilfalse

要查看NSNumberNSString的值是否为0,您应该这样做:

  

po dict [@" price"]。intValue == 0

你会得到以下的渴望结果:

  

你上一次尝试:

  

po dict [@" price"]。intValue

导致:

  

这又是正确的结果,因为dict[@"price"].intValue的值是int的{​​{1}}值。但您使用0表示po,因此print object被解释为0。如果你这样做:

  

p dict [@" price"]。intValue

您将获得所需的结果:

  

0

使用nil打印对象值。使用po打印原始值(例如p)。

答案 1 :(得分:0)

可变价格不能是整数。 NSDictionary中的每个键和值都必须是NSObject。 因此它可能是一个NSNumber。检索NSNumber值的方式如下:

myApp.controller("BlogController", ['$scope', '$http', function($scope, $http){
  $http.get('/assets/blogs.json').success(function(data){
    $scope.blogs = data;

    String.prototype.trunc = String.prototype.trunc ||
      function(n){
      // this will return a substring and
      // if its larger than 'n' then truncate and append '...' to the string and return it.
      // if its less than 'n' then return the 'string'
      return this.length>n ? this.substr(0,n-1)+'...' : this;
    };

  });
}]);

希望有所帮助