gpt4 book ai didi

ios - 类型 "ViewController"的 Swift 值没有名为 "Self"的成员错误

转载 作者:行者123 更新时间:2023-11-30 11:56:50 27 4
gpt4 key购买 nike

我试图理解 Swift 中的后沿闭包,这段代码在 promptForAnswer() 中给了我一个错误。具体来说,我收到一个 Xcode 错误,其中显示:

Value of type "ViewController" has no member named "Self"

...尽管我已经在代码中声明了它。

有人可以解释一下哪里出了问题吗?

import UIKit
import GameplayKit

var allWords = [String]()
var usedWords = [String]()

class ViewController: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()

navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(promptForAnswer))

if let startWordsPath = Bundle.main.path(forResource: "start", ofType: "txt") {
if let startWords = try? String(contentsOfFile: startWordsPath) {
allWords = startWords.components(separatedBy: "\n")
}
} else {
allWords = ["silkworm"]
}
startGame()
}

@objc func promptForAnswer() {
let ac = UIAlertController(title: "Enter answer", message: nil, preferredStyle: .alert)
ac.addTextField()

let submitAction = UIAlertAction(title: "Submit", style: .default) {
[unowned self, ac] (action: UIAlertAction) in
let answer = ac.textFields![0]
self.submit(answer: answer.text!) // Value of type "ViewController" has no member type "self"
}

ac.addAction(submitAction)
present(ac, animated: true)
}

func startGame() {
allWords = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: allWords) as! [String]
title = allWords[0]
usedWords.removeAll(keepingCapacity: true)
tableView.reloadData()
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return usedWords.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Word", for: indexPath)
cell.textLabel?.text = usedWords[indexPath.row]
return cell
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

最佳答案

当我使用默认工具链 (Swift 4.0) 将您的代码粘贴到 Xcode 9.2 中的 Playground 时,我在您指示的行上收到此错误:

Value of type 'ViewController' has no member 'submit'

您可以通过向 Controller 添加如下所示的方法来解决此错误:

func submit(answer: String) {
// ...
}

也许您使用的任何编译器版本都存在错误。或者也许只是度过了糟糕的一天。有时会发生奇怪的事情。 ́\_(ツ)_/́

即使是 Swift 的小版本,情况也可能发生很大变化,因此请确保包含 Xcode 的版本和您正在使用的工具链。它使重现您的体验变得更加容易。

关于ios - 类型 "ViewController"的 Swift 值没有名为 "Self"的成员错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47720777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com