【问题标题】:pass a dictionary item as a parameter将字典项作为参数传递
【发布时间】:2021-09-26 11:54:00
【问题描述】:

在我下面的快速代码中,目标是将字典项作为参数传递。如果它是一个字符串,这似乎会起作用,但是因为我试图从字典中传递一个项目,所以它不起作用。我正在从视图传递到另一个函数。

var girlsName = ["a": "Jessica Biel", "b": "Gwen Stefani","c":"Jessica Alba" ]

           override func viewDidLoad() {
    super.viewDidLoad()
    let index: Int = Int(arc4random_uniform(UInt32(girlsName.count)))
    let randomVal = Array(girlsName.values)[index]
    let randomVal2 = Array(girlsName.keys)[index]
   
   
    
}
@objc func submite( randomVal){

    print(randomVal)
  
    

    
}

【问题讨论】:

    标签: swift dictionary methods parameters


    【解决方案1】:
    • 通俗易懂地说,你不能将参数传递给@objc函数。

    • 要传递参数,你应该使用 func 而不是@objc func。

      func 提交(字典:[字符串:字符串]){ 打印(字典) }

    或者如果你想传递一个字符串作为参数:

    func submit(aString: String) {
       print(aString)
    }
    

    【讨论】:

      【解决方案2】:

      您可以像这样将字典作为参数传递:

      func submit(dict: [String: String]){
          print(dict)
      }
      

      【讨论】:

        【解决方案3】:

        我不确定你想要传递给其他函数的确切内容,但你应该使用函数 randomElement()

        girlsName.randomElement() // a random key/value pair
        
        girlsName.keys.randomElement() // a random key
        
        girlsName.values.randomElement() // a random value
        

        所以如果你想传递一个名称(值),它可能看起来像

        submite(randomVal: girlsName.values.randomElement() ?? "")
        

        如果submite 被声明为

        func submite(randomVal: String) 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-27
          • 2021-12-14
          • 2019-11-18
          • 1970-01-01
          • 2019-09-14
          • 2016-10-10
          • 1970-01-01
          • 2022-11-11
          相关资源
          最近更新 更多