gpt4 book ai didi

ios - 检查数组是否为 nil/或是否已在 Swift/iOS 中加载?

转载 作者:搜寻专家 更新时间:2023-11-01 05:50:42 25 4
gpt4 key购买 nike

检查对象数组是否已在 Swift 中加载的最佳做法是什么?

比如说,如果我在类中声明一个数组,并且它是延迟加载的。 Apple 的文档说数组声明/初始化类似于

var events = [Event]()

我想上面的意思是数组已经初始化(即不是零)。

然后,我需要一个像这样的函数:

func getEvents() -> [Event] {
// check if array is nil, and if so, load the events (not: which could be 0 events)
return events
}

在 Java 中,我会声明类似的东西

ArrayList<Event> events;

public ArrayList<Event> getEvents() {
if(!events) { // null means never been loaded
events = new ArrayList<Event>();
events = loadEvents(); // load the events, which could be zero
}
}

在 Swift 中编写等效代码的最佳实践是什么?

最佳答案

惰性存储属性

在 Swift 中,您可以声明一个惰性存储属性:它完全满足您的需要。

struct Event { }

class Foo {
lazy var events: [Event] = { self.loadEvents() }()

private func loadEvents() -> [Event] {
print("Loading events")
return [Event(), Event(), Event()]
}
}

我们将闭包关联到 events 属性。闭包定义了 events 属性应该如何填充,并且将仅在使用该属性时执行

let foo = Foo()
print(foo.events) // now the events property is populated

enter image description here

关于ios - 检查数组是否为 nil/或是否已在 Swift/iOS 中加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427795/

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