Я новичок в Ios разработке. В настоящее время одна функция возвращает NSMutableDictionary, который был сохранен в userDefaults. Но когда я извлекаю значения из userdefault, он возвращает неправильный формат NSMutableDictionary, который не может проанализировать NSMutableDictionary и вернуть обратно ошибку "не удалось привести значение типа '__NSSingleEntryDictionaryI' к NSMutableDictionary".
Функция, которая возвращает NSMutableDictionary
func initializeStructureOfControl () -> NSMutableDictionary {
var parentSlideControl = NSMutableDictionary()
var slideControl = NSMutableDictionary()
slideControl.setValue(NSMutableDictionary(), forKey: UserDefaultKeys.fdtControlKey)
slideControl.setValue(NSMutableDictionary(), forKey: UserDefaultKeys.pdtControlsData)
slideControl.setValue(NSMutableDictionary(), forKey: UserDefaultKeys.eeControlsData)
slideControl.setValue(NSMutableDictionary(), forKey: UserDefaultKeys.fbeControlsData)
parentSlideControl.setValue(slideControl, forKey: UserDefaultKeys.slideControlKey)
return parentSlideControl
}
Инициализация по умолчанию для пользователя
UserDefaults.standard.setValue( initializeStructureOfControl(), forKey: UserDefaultKeys.slideControlKey)
Получение значения
UserDefaults.standard.object(forKey: UserDefaultKeys.slideControlKey)
Значение, которое было сохранено в userdefault:
▿ some : 1 element
▿ 0 : 2 elements
▿ key : slideControlsData
▿ value : 4 elements
▿ 0 : 2 elements
- key : fbeControlsData
- value : 0 elements
▿ 1 : 2 elements
- key : eeControlsData
- value : 0 elements
▿ 2 : 2 elements
- key : fdtControlsData
- value : 0 elements
▿ 3 : 2 elements
- key : pdtControlsData
- value : 0 elements
Значение, полученное от userdefault
▿ some : 1 element
▿ 0 : 2 elements
▿ key : slideControlsData
▿ value : 4 elements
▿ 0 : 2 elements
- key : fbeControlsData
- value : 0 elements
▿ 1 : 2 elements
- key : eeControlsData
- value : 0 elements {.....}
▿ 2 : 2 elements
- key : fdtControlsData
- value : 0 elements {.....}
▿ 3 : 2 elements
- key : pdtControlsData
- value : 0 elements {.....}
, хотя оно работает в ios 12 или до устройства (которое возвращает то же значение, которое было сохранено), но в ios 13 и позже возвращает вышеуказанную строку формата вместо сохраненной в пользовательской настройке по умолчанию.