Im сохранение словаря в NSUserDefaults следующим кодом:Доступ к данным __NSDictionaryI
let data = NSKeyedArchiver.archivedDataWithRootObject(self.markerArray)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "pins")
Чтобы получить доступ к этой информации я использую
let outData = NSUserDefaults.standardUserDefaults().dataForKey("pins")
let dict = NSKeyedUnarchiver.unarchiveObjectWithData(outData!)
при печати Dict я получаю то, что я хочу: полный словарь данных (образец):
79 = { address = "Arizona, USA"; category = nature; id = 135; lang = "-112.113"; lat = "36.107"; name = "Grand Canyon National Park"; placeId = ChIJFU2bda4SM4cRKSCRyb6pOB8; type = "point_of_interest"; };
Теперь, когда я хочу, чтобы получить доступ к конкретной записи, все это я получаю ноль
print(dict!["79"]!["name"]!)
разархивирована словарь типа __NSDictionaryI, если это помогает. Запуск ниже код также печатает ноль
print("dict[79] is of type: \(dict!["79"]!.dynamicType)")
Сохранение словаря с именем переменных маркеров ** Массив ** довольно запутанный. – vadian
Поскольку у вас уже есть 'NSKeyedArchiver', а данные просто сохраняют его в файле в каталоге Documents. Это гораздо лучшее решение. 'NSUserDefaults' действительно не предназначен для хранения данных, имя говорит много: Пользовательские настройки по умолчанию. – zaph