使用 class 中结构的函数
Use function from a structure in class
我是 Swift 的新手,在使用 classes 和结构时遇到问题。
我有一个名为工作区的结构:
struct Workspace: Decodable {
var guid: String
var name: String
func getUserWorkspace(base: String, completed: @escaping () -> ()){
//some code
}
}
这是我的 class 用户:
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)
在我将它放入结构之前,它直接在 class 中,但自从我更改它后它就不再起作用了,所以我想我可能以错误的方式调用它?
WorData
为零。
条件展开(co.WorData?.getUserWorkspace(base: co.Base)
将在尝试调用该方法之前检查 WorData 是否有值。如果它为 nil 而 Swift 没有这样做,它会崩溃。
要么一直设置为新的
var worData = Workspace()
在class初始化后设置
var user = User()
user.worData = Workspace() // or pass a specific one in
或者要求您的用户对象使用工作区进行初始化
class User: NSObject {
var wor = [Workspace]()
var workspace: Workspace // use lower camel case for var names
required init(workspace: Workspace) {
self.workspace = workspace
}
}
我是 Swift 的新手,在使用 classes 和结构时遇到问题。
我有一个名为工作区的结构:
struct Workspace: Decodable {
var guid: String
var name: String
func getUserWorkspace(base: String, completed: @escaping () -> ()){
//some code
}
}
这是我的 class 用户:
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)
在我将它放入结构之前,它直接在 class 中,但自从我更改它后它就不再起作用了,所以我想我可能以错误的方式调用它?
WorData
为零。
条件展开(co.WorData?.getUserWorkspace(base: co.Base)
将在尝试调用该方法之前检查 WorData 是否有值。如果它为 nil 而 Swift 没有这样做,它会崩溃。
要么一直设置为新的
var worData = Workspace()
在class初始化后设置
var user = User()
user.worData = Workspace() // or pass a specific one in
或者要求您的用户对象使用工作区进行初始化
class User: NSObject {
var wor = [Workspace]()
var workspace: Workspace // use lower camel case for var names
required init(workspace: Workspace) {
self.workspace = workspace
}
}