【问题标题】:id to int conversion from NSMutableDictionary to NSArray从 NSMutableDictionary 到 NSArray 的 id 到 int 转换
【发布时间】:2014-08-01 16:06:14
【问题描述】:
我正在从 .plist 文件加载数字,其值为 0 或 1。
然后我将这些值加载到NSArray。
那我希望能够做到
if([levelOkays[1] == 1){
[play1 setTitle:@"Play" forState:UIControlStateNormal];
[play1 setEnabled:true]; // To toggle enabled / disabled
}else{
[play1 setTitle:@"Locked" forState:UIControlStateNormal];
[play1 setEnabled:false]; // To toggle enabled / disabled
}
其中levelOkay 是NSArray。问题是,我不能执行== 1,因为数组中的值是 id 并且 1 是整数。如何从一种转换为另一种。
【问题讨论】:
标签:
ios
objective-c
nsarray
nsmutabledictionary
【解决方案1】:
我会这样做,如果您的值在数组中确实是 0 和 1,那么看起来会更优雅。
BOOL _isOkay = [levelOkays[1] boolValue];
[play1 setTitle:(_isOkay ? @"Play" : @"Locked") forState:UIControlStateNormal];
[play1 setEnabled:_isOkay];
或
如果您根本不需要布尔值:
[play1 setEnabled:[levelOkays[1] boolValue]];
[play1 setTitle:(play1.isEnabled ? @"Play" : @"Locked") forState:UIControlStateNormal];
【解决方案2】:
您可能正在寻找intValue 方法:
if (levelOkays[1].intValue == 1)
或者如果它们真的只是布尔值,那么使用boolValue。
【解决方案3】:
当您从 plist 加载 NSArray 时,plist 中的数字将加载为 NSNumbers。 (假设 plist 正确编码类型,<integer>)
您可以将数字与 int 进行比较,如下所示:
if ([levelOkays[1] integerValue] == 1)