NSUnknownKeyExeption с использованием firebase и NSobject - PullRequest
0 голосов
/ 30 декабря 2018

2018-12-30 15: 01: 23.228731 + 0200 iChat [51679: 726127] *** Завершение работы приложения из-за необработанного исключения «NSUnknownKeyException», причина: «[setValue: forUndefinedKey:]: этот класс являетсяне соответствует значению ключа для имени пользователя ключа. '(lldb)

Использование словаря Firebase для установки значения ключа для класса NSobject

import UIKit

class User: NSObject {
var email: String?
var username: String?
}

Функция

func fetchUsers() {
    Database.database().reference().child("users").observe(.childAdded) { (snap) in
        if let dictionary = snap.value as? [String : AnyObject]{
        let user = User()
            user.setValuesForKeys(dictionary)
            print(user.username)
        }
    }
}

1 Ответ

0 голосов
/ 30 декабря 2018

Вывод Objective-C был изменен в Swift 4. Вы должны добавить атрибут @objc к каждому свойству

class User: NSObject {
   @objc var email: String?
   @objc var username: String?
}

Однако setValuesForKeys очень target-c-ish .В Swift есть лучшие (и более легкие) способы без тяжелой среды выполнения ObjC.

И почему оба свойства являются необязательными?Разрешено ли пользователям без имени и адреса электронной почты?

Учтите, что при не опциональных параметрах компилятор выдаст ошибку в время компиляции , если вы собираетесь передать nil.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...