gpt4 book ai didi

ios - 如何在应用首次加载时运行函数

转载 作者:搜寻专家 更新时间:2023-10-31 08:20:56 25 4
gpt4 key购买 nike

我正在尝试用 Swift 编写一个简单的待办事项列表,它将列表存储为字符串数组,然后在应用加载时从内存中调用它。

我有以下代码:

var itemList = [String]()

func loadData() -> [String] {
var arr = [String]()

if NSUserDefaults.standardUserDefaults().objectForKey("storedData") != nil {
arr = NSUserDefaults.standardUserDefaults().objectForKey("storedData")! as! [String]
}
else {
arr = ["Nothing to do..."]
}

return arr
}

func saveData(arr: [String]) {
NSUserDefaults.standardUserDefaults().setObject(arr, forKey: "storedData")
}

我遇到困难的地方在于调用 loadData() 的位置。这是一个有两个 View Controller 的应用程序(一个用于列表,一个用于添加项目设置),所以如果我将 loadData() 调用放在主视图 Controller 的 viewDidLoad() 中,数组将从内存中回调(并覆盖)每次我切换回主视图 Controller 。

调用它的最佳位置在哪里,以便在应用程序启动时它只加载一次?

最佳答案

the array is called back in from memory (and over-written) every time I switch back to the main view controller.

没有。 viewDidLoad 仅在应用启动时加载一次。每次 View Controller 更改时,只有 viewWillApprearviewDidAppear 被调用。

您还可以使用 if let 使您的代码更紧凑:

  if let storedData = NSUserDefaults.standardUserDefaults().objectForKey("storedData") as! [String]{
arr = storedData
}

但是如果你想确保只加载一次,你可以将它放在 AppDelegate 文件中的 applicationDidFinishWithOptions 方法中。

但是你必须在你的 AppDelegate 文件中创建一个变量,你可以从你的 viewController 访问它。

关于ios - 如何在应用首次加载时运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230226/

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