2014-10-07 4 views
2

Я могу получить одну строку для сохранения в NSUserDefaults, но я не уверен, почему она не сохранит массив, используя приведенный ниже код. Я уверен, что это что-то маленькое, но может использовать указатель.nsuserdefault не сохраняет массив - Swift

// 
// 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] 

Примечание: "Имена: Rob" от предыдущей одной строки сохранения.

+0

Что еще находится в вашем массиве, кроме "Билли" и "Крис"? Потому что они наверху. –

+0

Имеются два оператора println(). Первый подтверждает, что в массиве есть данные. Второй вывод NSUserDefaults показывает, что массив не был добавлен. –

ответ

2

Цифры ... Я отправляю вопрос. Я трачу часы на то, чтобы отвечать самостоятельно, а через несколько минут я найду решение.

В любом случае, похоже, NSUserDefaults не любит «String», однако его изменение на «NSString» работает.

Так что изменение ...

var storeNames:[String] = [] 

в

var storeNames:[NSString] = [] 
+1

Это старый вопрос, но вы спасли мне жизнь. Большое спасибо, чувак :) Я сделал адское исследование без ответа и бум вот ответ. Вы правы! Но почему это так, вы знаете? –