【问题标题】:How to compare two dictionary key values and print text in cell in iOS?如何比较两个字典键值并在iOS中的单元格中打印文本?
【发布时间】:2016-11-09 11:58:06
【问题描述】:

我有两个包含多个项目的字典。我想比较值。

Dict1:{
"Displacement_trim" = "49.26 ";
"Dry_Weight" = "<null>";
}

Dict2:{
"Displacement_trim" = "171.20 ";
"Dry_Weight" = "<null>";
} 
  1. 我想知道哪个“Displacement_trim”更大。
  2. 还检查空值。
  3. 打印单元格中的数据。

我怎样才能做到这一点?

【问题讨论】:

  • 在您提供的情况下,请在比较这两个字典时显示您希望看到的输出
  • @SergheiCatraniuc 我在标签中显示数据,其中键值大于我想要突出显示的标签。
  • 所以在您提供的情况下,由于 Dict2 中 Displacement_trim 的值更大,您将突出显示 Dict2 的标签,对吗?
  • 取出所有 Displacement_trim 值。使用 NSorderascending 比较这些值。你会得到更大的价值
  • @NarendraPandey 你能用一些代码解释我吗?我尝试了所有 ST 答案,但没有得到

标签: objective-c uitableview comparison nsmutabledictionary


【解决方案1】:

要找出字典中的哪个值更大,请使用以下代码:

斯威夫特 3

let dict1 = [ "Displacement_trim" : "49.26", "Dry_Weight" : "<null>" ]
let dict2 = [ "Displacement_trim" : "171.20", "Dry_Weight" : "<null>" ]

// I force unwrapped everything for brevity
if Float(dict1["Displacement_trim"]!)! > Float(dict2["Displacement_trim"]!)! {
    // highlight label for dict1
} else {
    // highlight label for dict2
}

Objective-C

NSDictionary *dict1 = @{@"Displacement_trim" : @"49.26", @"Dry_Weight" : @"<null>"};
NSDictionary *dict2 = @{@"Displacement_trim" : @"171.20", @"Dry_Weight" : @"<null>"};

NSString *dict1DisplacementTrim = dict1[@"Displacement_trim"];
NSString *dict2DisplacementTrim = dict2[@"Displacement_trim"];

if (dict1DisplacementTrim.floatValue > dict2DisplacementTrim.floatValue) {
    // highlight label for dict1
} else {
    // highlight label for dict2
}

【讨论】:

  • 可以直接将这些值与键值“49.26”、“171.20”进行比较
  • 我们从 dict1 获得“Displacement_trim”值“49.26”,从 dict2 获得“Displacement_trim”值 171.20,对吗?如果没有 Displacement_trim 值,我们可以直接比较这些数字吗?有可能吗?
  • dict1DisplacementTrim.floatValue &gt; dict2DisplacementTrim.floatValue 这正是这样做的。它将这些值从字符串转换为浮点数并进行比较。基本上这正在发生49.26 &gt; 171.20
【解决方案2】:
NSMutableDictionary *dict1,*dict2;

 dict1 = [[NSMutableDictionary alloc]init];
dict2 = [[NSMutableDictionary alloc]init];

[dict1 setObject:[NSNumber numberWithFloat:13.20] forKey:@"Displacement_trim"];

[dict2 setObject:[NSNumber numberWithFloat:10.20] forKey:@"Displacement_trim"];

if ( [[dict1 valueForKey:@"Displacement_trim"] compare:[dict2 valueForKey:@"Displacement_trim"]]==NSOrderedAscending) {
    NSLog(@"dict 2 is greater");
}else{
    NSLog(@"dict 1 is greater");
}

如果有任何问题,请告诉我。

【讨论】:

  • 一切正常。我们需要将 if ( [[dict1 valueForKey:@"Displacement_trim"] compare:[dict2 valueForKey:@"Displacement_trim"]]==NSOrderedAscending) 更改为 if ( [[dict1 objectForKey:@"Displacement_trim"] compare:[dict2 objectForKey :@"Displacement_trim"]]==NSOrderedAscending)
  • 根据需要更改。
  • 可以直接将这些值与键值“49.26”、“171.20”进行比较。
  • 如果我将该 dict 转换为数组,是否有可能?没有 valueForKey?
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 2015-01-25
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多