【问题标题】:How can I get the value of dict for the set of values in an array in Swift 2.0?如何在 Swift 2.0 中获取数组中一组值的 dict 值?
【发布时间】:2015-09-19 02:52:26
【问题描述】:

我不确定我是否正确地提出了这个问题。但这就是解释:我有一本联系人字典:

var arrOfDictContacts = NSMutableArray()
self.arrOfDictContacts.addObject(["\(names)":"\(numb)"])

添加后

arrOfDictContacts = ["Arun":"+123", "Babu":"+234", "Chitra":"+345"]

我有一组名字arrOfNames = ["Arun", "Chitra"]

现在我想在这样的数组中从 dict 中获取这些名称的相应数量:

arrOfNumbers = ["+123", "+345"] // Expected Output 如何获取它们?

【问题讨论】:

    标签: ios arrays nsdictionary swift2


    【解决方案1】:

    你可以这样做:

    var arrOfDictContacts = Dictionary<String, String>()
    arrOfDictContacts = ["Arun":"+123", "Babu":"+234", "Chitra":"+345"]
    var arrOfNames = ["Arun", "Chitra"]
    var arrOfContacts = [String]()
    
    for name in arrOfNames {
        arrOfContacts.append(arrOfDictContacts[name]!)
    }
    
    println("\(arrOfContacts)")
    

    【讨论】:

    • [name] 上遇到错误Cannot convert value of type String to expected argument type Int
    • 对我来说,这就像一个魅力!请确保您正确地声明您的arrOfDictContacts ,就像我在我编辑的帖子中所做的那样。 @AAA
    【解决方案2】:

    给你...

    let arrOfDictContacts = ["Arun":"+123", "Babu":"+234", "Chitra":"+345"]
    let arrOfNames = ["Arun", "Chitra"]
    var arrOfNumbers = [String]()
    
    for name in arrOfNames {
    
     if let aNumber = arrOfDictContacts[name] {
    
        arrOfNumbers.append(aNumber);
     }
    }
    

    【讨论】:

    • [name] 上遇到错误Cannot convert value of type String to expected argument type Int
    • 这个错误说明arrOfDictContacts的key不是String类型。请检查您的 arrOfDictContacts 字典。我在 Playgroud 上测试了这段代码。没关系。
    • 我将arrOfDictContacts 声明为NSMutableArray 并通过self.arrOfDictContacts.addObject(["\(names)":"\(numb)"]) 添加值namesnumbString
    【解决方案3】:

    这是一个单行:

    arrOfNames.map({ arrOfDictContacts[$0] })
    

    【讨论】:

      【解决方案4】:

      请试试这个:

          let dict = ["Arun":"+123", "Babu":"+234", "Chitra":"+345"]
          let names = ["Arun", "Babu"]
      
          let allValues = dict.map({ $1 })
          let valuesByName = names.map({ dict[$0] })
      
          print("\(allValues)")
          print("\(valuesByName)")
      

      这是在 Playground 中输出的样子:

      我认为您最好在 Swift 中了解更多关于 mapfilter 的信息。如果该语言提供了一种优雅的方式来做某事,请确保您利用它而不是重新发明轮子。

      【讨论】:

      • 我不想要所有的值,我只想要 arrOfNames 中的名称值
      • $1 错误为 Type of error is ambiguous without more context
      • 是的。 map 也有错误 Cannot invoke 'map' with an argument list of type ((Int) -&gt; AnyObject)
      • 你是只运行我的代码块还是你自己的代码?这很简单,不会错。请用截图看看我编辑的答案......
      猜你喜欢
      • 2021-03-14
      • 2016-01-08
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2018-10-16
      相关资源
      最近更新 更多