сохранение массива данных приводит к быстрому сбою

Я попытался добавить элемент в arrar и сохранить его в Userdefault, но приложение разбилось, и я хотел бы, чтобы кто-нибудь указал мне, что я делаю неправильно

private func putArray(_ value: GMSAutocompletePrediction?, forKey key: String) {
        guard let value = value else {
            return
        }
        log("THE MESSAGE \(value)", .fuck)
        var newArray = getArray(forKey: key)
        log("THE MESSAGE ARRAY \(newArray)", .fuck)
        if newArray.contains(value) {
            newArray.remove(at: newArray.firstIndex(of: value)!)
        } else {
            newArray.append(value)
        }

        storage.setValue(NSKeyedArchiver.archivedData(withRootObject: newArray), forKey: key)
    }

ошибка из-за сбоя

[GMSAutocompletePrediction encodeWithCoder:]: нераспознанный селектор отправлен в экземпляр 0x2818f9ce0 2019-09-26 13: 40: 07.300856 + 0100 MAX.NG Staging Debug [4440: 1410011] *** Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: ' - [GMSAutocompletePrediction encodeWithCoder:]: нераспознанный селектор отправлен в экземпляр 0x2818f9ce0 '


person King    schedule 26.09.2019    source источник


Ответы (1)


GMSAutocompletePrediction не соответствует NSCoding, поэтому вы не можете сохранить его по умолчанию, вы можете извлечь из него важные детали и создать собственную модель для сохранения

person Sh_Khan    schedule 26.09.2019
comment
но я конвертирую его в данные перед сохранением - person King; 26.09.2019
comment
Я не могу заставить его соответствовать NSCoding? - person King; 26.09.2019
comment
извините, нет, свойства не получаются, только вы даже не можете соответствовать и устанавливать их - person Sh_Khan; 26.09.2019
comment
Ладно, могу я так использовать? - person King; 26.09.2019
comment
что с точки зрения свойств вам нужно от этого класса экономии? - person Sh_Khan; 26.09.2019
comment
имя и идентификатор услуги - person King; 26.09.2019
comment
struct Root :Codable{ let name: String ; let serviceId:Int } залейте его из класса GMSAutocompletePrediction и сохраните с помощью Codable - person Sh_Khan; 26.09.2019