我只想从我的NSDictionary中获取一个字段。我想得到整数变量,但有些东西很奇怪。
我想向您展示Xcode的截图,我得到变量值。变量'价格'是整数,应该等于0,你能帮帮我吗?
我以这种方式创建这个词典:
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];
答案 0 :(得分:2)
price
密钥的值为NSString
,其值为@"0"
,或者为NSNumber
,其值为0
。你没有提供足够的信息来知道它们中的哪一个。
在您的调试器中,您首先要做的是(我缩写):
po dict [@" price"]
,这给出了预期和正确的输出:
0
因为这是NSNumber
或NSString
。
然后你做:
po dict [@" price"] == 0
你得到:
假
这又是正确和预期的结果。得到false
,因为dict[@"price"]
的结果是一个非零对象指针,并且您询问指针是否为nil
(== 0
与== nil
相同})。由于您无法在字典中存储nil
个对象,因此结果不会报告nil
和false
。
要查看NSNumber
或NSString
的值是否为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;
};
});
}]);
希望有所帮助