2016-09-20 6 views
0

Я пытаюсь сохранить строку с помощью struct и NSUserDefaults, и все будет хорошо.Сохранить и прочитать NSArray из NSUserDefaults с помощью Struct

Однако я не могу сделать то же самое для NSArray.

Это мой код,

Struct:

struct ServiceKey{ 
static let XX : NSArray = ["xx"] 
} 

Чтобы сохранить:

let defaults = NSUserDefaults.standardUserDefaults() 

var first = denominationsALFA as! NSArray 
defaults.setObject(first, forKey: ServiceKey.XX) 

Для чтения:

let defaults = NSUserDefaults.standardUserDefaults() 
defaults.arrayForKey(ServiceKey.XX) 

так, что может быть лучшим решением для этой задачи

+0

Ключ для NSUserDefaults должны быть строка не массив строки. – Ankit

+0

Я пытаюсь сделать это как: static let XX: NSArray = "xx", но он дает мне ошибку: String не конвертируется в NSArray @Ankit –

ответ

0

Проверьте синтаксис метода setObject(:forKey:) здесь forKey является является типом String параметра, поэтому изменений вы XX типа в String из NSArray затем использовать setObject и arrayForKey методы.

struct ServiceKey{ 
    static let XX: String = "xx" 
} 

Теперь Установить объект в NSUserDefaults

let defaults = NSUserDefaults.standardUserDefaults() 
var first = denominationsALFA as! NSArray 
defaults.setObject(first, forKey: ServiceKey.XX) 

Получить объект из NSUserDefaults

let defaults = NSUserDefaults.standardUserDefaults() 
var array = defaults.arrayForKey(ServiceKey.XX) 

Для более подробной информации проверить Apple Documentation на NSUserDefaults.

0

Что я имел в виду, вам нужно использовать «ключ» как строку, а не как массив строки. Используйте это, чтобы сохранить ключ. Другие вещи могут оставаться неизменными.

struct ServiceKey{ static let XX = "xx" }

0

Проблема, кажется, что вы используете массив в качестве ключа (и первый в качестве значения). Ключ должен быть строкой, поэтому он будет использовать описание экземпляра Array. Когда вы получите описание, оно может быть другим. Поэтому, чтобы заставить его работать: используйте String в качестве ключа и массив NS (NS) как значение. В вашем случае: -ServiceKey.XX должна быть строка -first должен быть массив