【问题标题】:How to persist data that is appended to a global array swift 2如何持久化附加到全局数组 swift 2 的数据
【发布时间】:2016-05-28 14:14:58
【问题描述】:

在我开始之前,我只想说我对应用程序开发很陌生,我才刚一个月,所以请尽可能地对我说,哈哈。

好的,我正在开发一个报价应用程序,因此我创建了一个可以从任何视图控制器访问的数组。这将包含从另一个视图添加的“喜欢的”引号。

这是我的全局“likedArray”。它驻留在自己的 swift 文件中。

import Foundation

struct Globals {

    static var likedArray: [String] = ["Touch 'Liked' To Continue..."]

}

通过此方法,从另一个视图控制器文件将引号添加到 likeArray。

@IBAction func likedbuttonPressed(sender: AnyObject) {

    Globals.likedArray.append(quoteLabel.text)
}

“喜欢”的引号通过此方法显示在另一个视图中

// Like button method to move forward in array
@IBAction func likedButtonTouched(sender: AnyObject) {

    self.favouritesLabel.fadeOut(completion: {
        (finished: Bool) -> Void in

    self.currentlikedArrayIndex++
    if self.currentlikedArrayIndex < Globals.likedArray.count {
        self.favouritesLabel.text = Globals.likedArray[self.currentlikedArrayIndex]
    } else {
        self.currentlikedArrayIndex--
    }

     self.favouritesLabel.fadeIn()

    })  
}

这一切都很好,除了当我退出应用程序时,所有喜欢的引号都消失了。

那么,我的问题是如何保存这些数据? 如果您需要有关我的代码的更多信息,请告诉我。提前致谢。

【问题讨论】:

    标签: ios swift save global


    【解决方案1】:

    最省心的方法大概是使用NSUserDefaults,可以关注this tutorial了解具体方法

    教程要点:

    //for writing to storage
    let defaults = NSUserDefaults.standardUserDefaults()
    let array = ["Hello", "World"]
    defaults.setObject(array, forKey: "SavedArray")
    
    //for reading
    let array = defaults.objectForKey("SavedArray") as? [String] ?? [String]()
    

    所以基本上,你应该为你的全局数组创建一个 setter 方法,这样每次设置数组时,它都会写入 NSUserDefaults,然后在应用启动时它应该用 NSUserDefaults 中的内容填充数组

    更新:(只是在我的脑海中做了这个)

    struct Globals {
    
        static var likedArray: [String] = ["Touch 'Liked' To Continue..."]
    
        func addLikedString(likedString: String) {
    
            self.likedArray.append(likedString)
            NSUserDefaults.standardUserDefaults().setObject(self.likedArray, forKey: "SavedArray")
        }
    
        func getLikedStringAtIndex(index:Int) -> Int {
            return self.likedArray[index] 
        }
    
    }
    
    //inside your app delegate, or somewhere appropriate, to load the array when the app starts
    
    Globals.likedArray = NSUserDefaults.standardUserDefaults().objectForKey("SavedArray") as? [String] ?? [String]()
    

    【讨论】:

    • 好的,那我该如何编写setter方法呢?
    • 只需在 Globals 结构中创建一个函数,该函数将接收一个字符串,然后在其中放入 likedArray.append(string) 然后将该数组写入 NSUserDefaults,然后在您的 likedbuttonPressed 中使用该函数而不是直接附加到数组中
    • 听起来你正试图将不是字符串的东西放入数组 append 方法中,你将不得不粘贴完整的错误
    • 检查更新的答案,虽然我根本没有测试过代码,但是类似的东西应该可以保存你的数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多