Зачем мне нужен инициализатор при создании Realm Data Model? - PullRequest
0 голосов
/ 09 мая 2018

Я новичок в разработке для iOS, и я просто следую учебному пособию в Интернете

моя модель данных до реализации области выглядит следующим образом

import Foundation
import FirebaseFirestore

class CityKM {
    var name : String
    var coordinate : GeoPoint

    init (name: String , coordinate: GeoPoint ) {
        self.name = name
        self.coordinate = coordinate
    }

    init (dictionary: [String:Any]) {
        // this init will be used if we get data from firebase  to construct a city object

        name = dictionary["name"] as! String
        coordinate = dictionary["coordinate"] as! GeoPoint
    }


   }

и после реализации Import RealmSwift мой класс должен выглядеть следующим образом с помощью подкласса Object из области

import Foundation
import FirebaseFirestore
import RealmSwift


class CityKM : Object {
    @objc dynamic var name : String = ""
    @objc dynamic var var coordinate : GeoPoint = Geopoint(latitude: 6.01212, Longitude: -101.212)

    init (name: String , coordinate: GeoPoint ) {
        self.name = name
        self.coordinate = coordinate
    }

    init (dictionary: [String:Any]) {
        // this init will be used if we get data from firebase  to construct a city object

        name = dictionary["name"] as! String
        coordinate = dictionary["coordinate"] as! GeoPoint
    }


   }

но я не понимаю, почему он всегда выдает ошибку, в которой говорится, что мой класс CityKM должен иметь инициализатор

обязательный 'инициализатор' init () 'должен быть предоставлен подклассом 'Объект'

если я исправлю ошибку и последую инструкции по исправлению из xcode, ошибка все равно будет, и я не знаю, как это исправить, как на картинке ниже

enter image description here

что пошло не так и что мне делать?

1 Ответ

0 голосов
/ 09 мая 2018

Попробуйте объявить свой CityKM класс как этот

Здесь вы найдете объяснение, почему оно использовалось convenience Инициализация Apple

  class CityKM : Object {
    @objc dynamic var name : String = ""
    @objc dynamic var let coordinate : GeoPoint = Geopoint(latitude: 6.01212, Longitude: -101.212)

    convenience init (name: String , coordinate: GeoPoint ) {
        self.init()
        self.name = name
        self.coordinate = coordinate
    }

   convenience init (dictionary: [String:Any]) {
     self.init()
        // this init will be used if we get data from firebase  to construct a city object

        name = dictionary["name"] as! String
        coordinate = dictionary["coordinate"] as! GeoPoint
    }


}
...