我有以下代码:
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().这是一个具有两个视图控制器的应用程序(一个用于列表,一个用于添加项目设置),因此如果我在主视图控制器的vIEwDIDLoad()中放置loadData()调用,则从内存中调用该数组每次切换回主视图控制器时(并覆盖).
在应用程序启动时,最好的地方在哪里调用它以便它只加载一次?
解决方法the array is called back in from memory (and over-written) every time I switch back to the main vIEw controller.
编号vIEwDIDLoad仅在应用启动时加载一次.每次vIEwcontroller更改时,都会调用vIEwWillApprear和vIEwDIDAppear.
您还可以使用if let使代码更紧凑:
if let storedData = NSUserDefaults.standardUserDefaults().objectForKey("storedData") as! [String]{ arr = storedData }
但是如果你想确保只加载一次,你可以将它放在applicationDIDFinishWithOptions方法的AppDelegate文件中.
但是你必须在AppDelegate文件中创建一个可以从vIEwController访问的变量.
总结以上是内存溢出为你收集整理的ios – 如何在应用首次加载时运行功能全部内容,希望文章能够帮你解决ios – 如何在应用首次加载时运行功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)