【发布时间】:2021-08-06 00:39:42
【问题描述】:
我在 XCode 12/Swift 5 中使用以下代码来尝试执行以下操作:
-
接收一个从一个视图控制器传递给这个视图控制器的变量(passedVerb,这可行)
-
根据传递的“passedVerb”变量在字典中查找项目。这将根据用户在主视图控制器中使用的动词而改变,因此我需要它能够将其切换出去。
-
当我在操场上运行以下代码时,它运行良好
import UIKit var yekol = [0: "yekol", 1: "bekol", 2: "btekol"] var youm = [0: "youm", 1: "boum", 2: "btoum"] var yekol2 = ["inf": "yekol", "ana": "bekol", "enta": "btekol"] var verbs = [yekol, youm] var randVerb = verbs.randomElement() //depending on which random verb is chosen, look up in the right dictionary above var anaForm = randVerb![1]! var entaForm = randVerb![2]! print(anaForm as Any) print(entaForm as Any)
但是当我尝试在主项目的视图控制器中执行此操作时,我无法像使用“randVerb”在正确的字典中查找一样使用“passedVerb”:
import UIKit
class AboutViewController: UIViewController {
//variables
var anaForm = ""
var entaForm = ""
var nehnaForm = ""
//a variable to hold the data from the first ViewController
var passedVerb = ""
let yekol = [0: "yekol",
1: "bekol",
2: "btekol",
3: "mnekol"]
let edros = [0: "edros",
1: "bedros",
2: "btedros",
3: "mnedros"]
func updateTable() {
//below works, but only because I'm explicitly calling the right dictionary
var anaForm = yekol[1]
//neither of the below forms work in the same way as in playground. i get a 'subscript(_:)' is unavailable: cannot subscript String with an Int, use a String.Index instead. i can't for the life of me figure out how to fix this despite the warning
var entaForm = passedVerb![2]!
var nehnaForm = passedVerb[3]
anaLabel.text = anaForm
entaLabel.text = entaForm
nehnaLabel.text = nehnaForm
}
}
@IBOutlet weak var currentVerb: UILabel!
@IBOutlet weak var anaLabel: UILabel!
@IBOutlet weak var entaLabel: UILabel!
@IBOutlet weak var nehnaLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
currentVerb.text = passedVerb
updateTable()
}
}
任何见解或帮助将不胜感激。我一直在学习 Xcode/Swift 作为我的第一门编码语言,所以希望这不是(也许是?)太明显的问题。
提前致谢!
【问题讨论】:
-
“接收一个从一个视图控制器传递给这个视图控制器的变量(passedVerb,这有效)”你所谓的“一个视图控制器”在哪里?
-
你如何在另一个视图控制器中调用“updateTable”?
-
嗨!当第二个视图控制器加载时,我只是调用函数“updateTable”,以便第二个视图控制器中的标签显示正确的形式。第一个视图控制器非常基本,而我对此进行测试:只需使用按钮点击将字符串变量传递给第二个: //动词范式备忘单 @IBAction func didTapButton() { let vc = storyboard?.instantiateViewController(identifier: “about_vc”)为! AboutViewController vc.passedVerb = infVerb present(vc, animated: true) }
-
(抱歉,如果这不是正确的回应方式。对此不熟悉。)
-
“当第二个视图控制器加载时”向我们展示如何而不是告诉我们何时。
标签: swift xcode dictionary replace lookup