【问题标题】:Check if array contain specific string检查数组是否包含特定字符串
【发布时间】:2013-04-28 10:50:26
【问题描述】:

我将不同的代码保存在一个数组中,现在想检查一个代码是否在数组中。

我搜索了一下,但没有任何工作......

您可以在这里看到我的数组的外观:

2013-04-28 12:43:23.877 myApp[9422:907] PushArray: (
    {
    code = 123;
    titel = "Test 01";
},
    {
    code = 456;
    titel = "Test 02";
},
    {
    code = 789;
    titel = "Test 03";
}
)

我试过这个来检查:

NSString *code = [NSString stringWithFormat:@"123"];;

if ([PushArray containsObject:code]) {
    NSLog(@"Code true!");
}else {
    NSLog(@"Code false!");
}

但是每次我得到“Code false!”回来...

【问题讨论】:

    标签: xcode arrays nsarray contains


    【解决方案1】:

    数组中的对象实际上是 NSDictionary 对象。因此,要比较数字,让我们枚举数组并对来自该字典对象的值进行比较:

    NSNumber * code = [NSNumber numberWithInteger: 123];
    for(NSDictionary * anEntry in pushArray)
    {
        NSNumber * numberFromEntry = [anEntry objectForKey: @"code"];
        if([code isEqualToNumber: numberFromEntry])
            NSLog( @"code true!");
    }
    

    另外,请注意我将您的数组名称从“PushArray”更改为“pushArray”。标准的 Objective-C 约定是对变量和对象使用小写字母,对类使用大写。

    (我的答案的原始版本——我很快抓住并编辑了——是比较字符串;但我猜字典对象中的那些代码值实际上是数字而不是字符串)

    【讨论】:

    • 哦该死的我忘记了数组中有一个字典://非常感谢,你的代码有效!
    • 有没有办法从“for”返回一个带有“code true”或“code false”的NSString?
    • 而不是“NSLog( @"code true!");”,做一个“return @"code true";”(假设你的函数的返回类型是一个NSString)
    • 完美,是否也可以删除字典中包含代码的所有条目 Like if([code isEqualToNumber: numberFromEntry]) DELETE ENTRY; 非常感谢您的帮助! :)
    • 仅当它是我们正在使用的可变字典或可变数组时。
    猜你喜欢
    • 2010-11-16
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2020-04-17
    • 2014-01-08
    相关资源
    最近更新 更多