gpt4 book ai didi

ios - 使用类中结构的函数

转载 作者:行者123 更新时间:2023-11-28 11:59:46 25 4
gpt4 key购买 nike

我是 Swift 的新手,在使用类和结构时遇到问题。

我有一个名为工作区的结构:

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
}

所以我在我的 View Controller 中做的是这样的:

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

或者要求您的用户对象使用工作区进行初始化

class User: NSObject {
var wor = [Workspace]()
var workspace: Workspace // use lower camel case for var names

required init(workspace: Workspace) {
self.workspace = workspace
}

}

关于ios - 使用类中结构的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50294811/

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