我是Swift的初学者。我创建了一个非常简单的按钮组件,但是当我尝试添加一个与按钮单击相关的函数时,出现错误:“使用未解析的标识符'self'。”这是我的代码:
const userBy = u => u.id == id;
const user = users.find(userBy);
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
如注释中所述,由于您不在类或结构中工作,因此在您的代码中没有self
可以引用。您要做的第一件事是将这些内容包装到一个类中,并进行一些重组。我建议回到Xcode并执行以下操作:
现在,您应该已经从模板创建了一个简单的Playground。在这里,您将看到如何创建一个从MyViewController
继承的名为UIViewController
的新类。在其中,您将找到一个名为loadView()
的函数。然后,在该类之外,您将看到这个新的视图控制器的创建位置,并将其放置在PlaygroundPage当前的liveView中。
理想情况下,您应该能够单击代码视图底部的“播放”按钮,如果“助手”编辑器处于打开状态,您将看到一个带有“ Hello World!”的简单视图。标签位于视图中心。 (辅助按钮是带有两个互锁圆的按钮。)
假设它可以运行并为您工作,那么我建议您开始重新添加代码,并尝试遵循模板中的模式设置。将设置视图的代码放在loadView()
函数中,然后将ButtonClicked()
函数移到该函数之外,但仍在该类之内。
进行一些修改,您应该能够启动并运行,并开始使用Swift。例如,这是您的Playground代码的有效版本:
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
override func loadView() {
let containerView = UIView (frame: CGRect(x: 0, y: 0, width: 600, height: 600))
containerView.backgroundColor = UIColor.blue
let button = UIButton (frame: CGRect(x: 100, y: 100, width: 200, height: 200))
button.backgroundColor = UIColor.yellow
button.setTitle("Test Button", for: .normal)
button.setTitleColor(.red, for: .normal)
button.layer.cornerRadius = 10
button.addTarget(self, action: #selector(ButtonClicked), for: .touchUpInside)
containerView.addSubview(button)
self.view = containerView
}
@objc func ButtonClicked(_ sender: UIButton) {
print("ButtonClicked")
}
}
PlaygroundPage.current.liveView = MyViewController()
玩得开心,花一些时间在《 Swift编程指南》上,一切很快就会开始变得有意义。