ios - 使用类中结构的函数

标签 ios swift function class structure

我是 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/

相关文章:

iphone - 为什么这张图片没有添加到我的 ScrollView 中?

c - 使用数组打印出一些星号,这取决于用户在 C 中输入的数字

swift - NSURLSession 不遵循重定向

ios - Swift 如何解决发送到实例 0x7fa9e0d8b7c0 的无法识别的选择器

javascript - 每 30 秒运行一个函数 javascript

c++ - 使用 boost 线程和非静态类函数

ios - Swift - 将图像添加到圆形 View

ios - iAd 不会加载测试广告

ios - Swift 中的垂直标签栏

arrays - 在 View Controller 之间传递数组