2016-02-17 85 views
4

在我開始之前,我只想說我對應用程序開發一般都很陌生,我只在這裏待了一個月,所以請隨時儘可能把它貶低到我這裏哈哈。如何保存附加到全局數組的數據swift 2

好吧,所以我正在研究報價應用程序,所以我創建了一個可以從任何視圖控制器訪問的數組。這將包含「喜歡」的引號,這是從另一個視圖添加的。

這是我的全球「喜歡的陣列」。它駐留在它自己的swift文件中。

import Foundation 

struct Globals { 

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

} 

通過此方法從另一個視圖控制器文件中將引用添加到likedArray。

@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() 

    }) 
} 

顯示在另外的看法,當我退出程序這一切工作正常,但,都喜歡引用都消失了。

所以,我的問題是如何保存這些數據? 如果您需要更多關於我的代碼的信息,請告訴我。提前致謝。

回答

2

最省心的辦法可能是使用NSUserDefaults,可以按照this tutorial找出究竟如何

教程的JIST:

//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中的內容填充數組。

更新:(只是在我的頂部d)

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]() 
+0

好的,那麼我該如何去編寫一個setter方法呢? – Khoury

+0

只是在你的'Globals'結構中創建一個函數,它接受一個字符串,然後在裏面放置'likedArray.append(string)'然後把這個數組寫入NSUserDefaults,然後在你的'buttonPressed'中使用那個函數而不是直接追加到數組 – Fonix

+0

把「likedArray.append(字符串)」給我錯誤:不能轉換值... – Khoury

相關問題