应用程序重新启动时数组未保存。持久数据的问题

Posted

技术标签:

【中文标题】应用程序重新启动时数组未保存。持久数据的问题【英文标题】:Array is not saving when the app relaunches. Problem with persistent data 【发布时间】:2019-04-15 18:02:14 【问题描述】:

我正在尝试保存一个数组,但每当我重新加载应用程序时,该数组都是空的。

我已经尝试过 userDefaults 和 core Data。每次我构建一个数组时,它都会在我加载应用程序时开始为空。我不确定将数组保存在哪里以及是否通过 IBAction 添加到数组会导致问题

firstArray: [Double] = []
@IBAction func userSubmit(_ sender: Any) 
oneArray()
func oneArray()

    if selected == "Breakfast" 



    if let firstArrays = Double(glucoseReading.text!) 

        //append new element to  Array
        firstArray.append(firstArrays)
        print(breakfastSugarsArray)
  

  

我希望能够在应用程序重新启动时保存数组,并且每次加载应用程序时都不让数组开始为空。我的问题可能是我不知道在哪里保存数组,或者如何保存。

我希望能够在应用重新启动时保存数组,而不是每次加载应用时数组都开始为空。

【问题讨论】:

【参考方案1】:

每次触发userSubmit(...) 时,它都会检查selected 的值,如您的示例中那样,检查glucosReading.text 中是否有一些Double 数据,然后检索保存在UserDefault 中的数组并更新它使用新值。

@IBAction func userSubmit(_ sender: Any)     
   if selected == "Breakfast" 
       if let glucoseData = Double(glucoseReading.text!) 
           // retrieve from UserDefault if none create an empty array
           let glucoseListData = UserDefaults.standard.array(forKey: "glucoseListData") as? [Double] ?? [Double]()

           // store in UserDefault
           glucoseListData.append(glucoseData)
           UserDefaults.standard.set(glucoseListData, forKey: "glucoseListData")

           // check print outputs in Xcode logs
           println("Glucose data list: \(glucoseListData)")
       
    

【讨论】:

以上是关于应用程序重新启动时数组未保存。持久数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:NSManagedObjectContext 未保存/获取请求失败,直到应用退出和重新启动

GreenDAO 不会在应用程序重新启动时保留数据

应用退出和重新启动时不保存 NSManagedObjectContext

持久化图像数组

Core Data 默认使用线程吗?

房间数据库在重新启动应用程序时丢失数据