2014-10-07 39 views
2

我可以得到一個字符串來保存到NSUserDefaults,但我不知道爲什麼它不會使用下面的代碼保存數組。我相信這是一個小東西,但可以使用指針。nsuserdefault不保存數組 - 斯威夫特

// 
// ViewController.swift 
// DemoUserDefaults 
// 
// Created by Chris Cantley on 10/7/14. 
// Copyright (c) 2014 Chris Cantley. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController { 

var storeNames:[String] = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 


    storeNames.append("Billy") 
    storeNames.append("Chris") 

    // Shows the strings in the array. 
    println(storeNames) 


    // puts mutable into immutable object 
    let holdNames = storeNames 

    // "should" store the object into UserDefaults... but does not. 
    NSUserDefaults.standardUserDefaults().setObject(holdNames, forKey: "storeNames") 
    NSUserDefaults.standardUserDefaults().synchronize() 


    // Displays all data in UserDefaults... array is missing. 
    println(NSUserDefaults.standardUserDefaults().dictionaryRepresentation()) 


} 

} 

結果...

[Billy, Chris] 
[NSLanguages: (
en 
), AppleITunesStoreItemKinds: (
audiobook, 
"tv-episode", 
booklet, 
software, 
"software-update", 
"itunes-u", 
ringtone, 
"tv-season", 
movie, 
mix, 
newsstand, 
song, 
wemix, 
tone, 
artist, 
"podcast-episode", 
podcast, 
document, 
eBook, 
album, 
"music-video" 
), AppleKeyboardsExpanded: 1, NSInterfaceStyle: macintosh, AppleKeyboards: (
"[email protected]=US;sw=QWERTY", 
"[email protected]=Emoji", 
"[email protected]=US;sw=QWERTY" 
), AppleLanguages: (
en 
), names: Rob] 

注: 「名稱:羅布」 是從以前的單一字符串保存。

+0

還有什麼是你的陣列比 「比利」 和 「克里斯」 等?因爲他們在頂部。 – 2014-10-07 14:26:14

+0

有兩個println()語句。第一個確認數組中有數據。 第二個輸出NSUserDefaults,顯示未添加數組。 – 2014-10-07 17:04:31

回答

2

數字......我發佈了一個問題,我花了數小時尋找自己的答案,幾分鐘後我找到了解決方案。

總之,似乎NSUserDefaults不喜歡「字符串」,但將其改爲「NSString」的作品。

所以變化是...

var storeNames:[String] = [] 

var storeNames:[NSString] = [] 
+1

這是個老問題,但你救了我的命。非常感謝你的傢伙:)我做了一次沒有答案的研究,這裏的繁榮是答案。你統治!但爲什麼你知道這種情況? – 2016-06-06 18:20:20