ios - 在类中使用结构中的函数
问题描述
我是 Swift 新手,在使用类和结构时遇到了麻烦。
我有一个名为 Workspace 的结构:
struct Workspace: Decodable {
var guid: String
var name: String
func getUserWorkspace(base: String, completed: @escaping () -> ()){
//some code
}
}
这是我的班级用户:
public class User {
var Wor = [Workspace]()
var WorData:Workspace? = nil
//+some other var & functions
}
所以我在视图控制器中所做的是:
class SecondViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var listView: UITableView!
var co = User()
override func viewDidLoad() {
super.viewDidLoad()
co.WorData?.getUserWorkspace(base: co.Base) {
print("success")
self.listView.reloadData()
self.updateVertically()
}
listView.delegate = self
listView.dataSource = self
}
问题是代码永远不会进入函数 co.WorData?.getUserWorkspace(base: co.Base)
在我将它放入结构之前,它直接在课堂上,但自从我改变它后它就不再起作用了,所以我想我可能会以错误的方式称呼它?
解决方案
WorData
是零。
条件展开 (co.WorData?.getUserWorkspace(base: co.Base)
将在尝试调用该方法之前检查 WorData 是否有一个值。如果它是 nil 并且 Swift 没有这样做,它会崩溃。
您要么需要一直将其设置为新的
var worData = Workspace()
在类初始化之后设置它
var user = User()
user.worData = Workspace() // or pass a specific one in
或要求使用 Workspace 初始化您的 User 对象
class User: NSObject {
var wor = [Workspace]()
var workspace: Workspace // use lower camel case for var names
required init(workspace: Workspace) {
self.workspace = workspace
}
}
推荐阅读
- html - 关于 div 和 css 的一些问题(坚持页边距和悬停问题)
- ssh - 无法通过 ssh 连接到 Google Cloud Dataproc 的主节点,但可以通过 ssh 连接到 Compute Engine 虚拟机
- python - 转换 char2num 时出现 AttributeError: module 'tensorflow.python.keras.api._v1.keras.layers' has no attribute 'experimental'
- sql - Group By 中不允许使用分析功能
- javascript - 为什么函数没有在 ReactJS 的事件监听器中作为引用传递
- html - 我很难知道为什么我的 bg-image 在显示中折叠:table-cell 属性仅在 Firefox 中,它适用于 Chrome 和 Edge
- ansible - Ansible 没有在标签上收集事实
- java - 如何在java中使用索引遍历sql表的行
- html - 创建社交媒体图标
- c# - 有没有办法将字符串转换为命令?