【问题标题】:Get a specific string from an NSMutableArray using NSDictionary使用 NSDictionary 从 NSMutableArray 中获取特定字符串
【发布时间】:2023-03-24 16:32:01
【问题描述】:

我正在学习 iphone 应用程序开发,并正在研究允许您输入两个单词并将它们组合起来的东西。这两个词和组合词被输入到字典中,然后存储在可变数组中。还有另一个选项允许您输入整个单词,如果它在数组中,它将返回组成它的两个单独的单词。 我的问题是我不知道如何搜索数组并遍历每个对象并整理出答案。例如:

(
    {
    "Combined Word" = snowman;
    "Word 1" = snow;
    "Word 2" = man;
},
    {
    "Combined Word" = dirtbike;
    "Word 1" = dirt;
    "Word 2" = bike;
},
    {
    "Combined Word" = schoolbus;
    "Word 1" = school;
    "Word 2" = bus;
},
    {
    "Combined Word" = raindrop;
    "Word 1" = rain;
    "Word 2" = drop;
}

如果我进入schoolbus并按下按钮,我如何编码以便搜索可变数组并分析每个对象的“组合词”以便输入的词是一个值,它将返回相应的“词1 " 和 "字 2"。

【问题讨论】:

    标签: iphone ios objective-c nsmutablearray nsdictionary


    【解决方案1】:

    我不知道是否有更好或有效的方法,但我可以尝试这样的方法:

    NSString* word1;
    NSString* word2;
    for(NSDictionary *dict in yourArray){
       if([[dict objectForKey:@"Combined Word"] isEqualToString:yourSearchWord]]){
           word1 = [dict objectForKey:@"Word 1"];
           word2 = [dict objectForKey:@"Word 2"]; 
       }
    }
    

    请注意,这是一个错字,并没有在 XCode 中检查。

    【讨论】:

    • 您应该将word1word2 初始化为nil,以防数组中的组合词不匹配。
    • 另一个优化是在if 中添加一个break;。找到匹配项后无需检查数组的其余部分。
    • 是的..我忘记添加中断。
    • 谢谢,成功了!在此之前我也犯了一些错误,代码也指出了:)
    【解决方案2】:

    使用NSPredicate

    NSString *value= @"value1";
    NSPredicate *key1Predicate = [NSPredicate predicateWithFormat:@"%@ IN self.@allValues", value];
    NSArray *filteretSet1 = [dataSet filteredArrayUsingPredicate:key1Predicate];
    NSLog(@"filteretSet1: %@",filteretSet1);
    

    希望这会对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 2021-05-23
      • 2013-11-20
      • 2017-07-28
      • 1970-01-01
      相关资源
      最近更新 更多