Objectmapper: "Harus memanggil penginisialisasi yang ditunjuk dari superclass 'Navigator'" kesalahan telah terjadi.

Dibuat pada 28 Jan 2016  ·  4Komentar  ·  Sumber: tristanhimmelman/ObjectMapper

Saya menggunakan ObjectMapper dengan Realm dengan versi ini.

  • ObjectMapper 1.1.1
  • Alam 0.97.0
  • Cepat 2.1.1
  • Xcode 7.2

Tetapi ketika menambahkan kelas baru dengan Realm + ObjectMapper, terjadi kesalahan.
baris di bawah ini adalah pesan kesalahan.

Must call a designated initializer of the superclass 'Navigator'

dan ini adalah kelas baru yang saya tambahkan.

import RealmSwift
import ObjectMapper

class Navigator: Object, Mappable {

    dynamic var id : Int              = 0
    dynamic var name : String         = ""
    dynamic var imageURL : String     = ""
    dynamic var coverImageURL : String = ""
    dynamic var totalPlayCount : Int  = 0
    dynamic var totalFavCount : Int   = 0
    dynamic var createdAt : NSDate    = NSDate()
    dynamic var updatedAt : NSDate    = NSDate()

    var guides : [Guide] {        
        return linkingObjects(Guide.self, forProperty: "navigator")
    }

    override class func primaryKey() -> String {
        return "id"
    }

    override static func indexedProperties() -> [String] {
        return ["name", "imageURL", "totalPlayCount", "totalFavCount"]
    }

    // Mark: - ObjectMapper

    required convenience init?(_ map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        id             <- map["id"]
        name           <- map["name"]
        imageURL       <- map["avatar_url"]
        coverImageURL  <- map["cover_url"]
        totalPlayCount <- map["listen_count"]
        totalFavCount  <- map["favorite_count"]
        createdAt      <- (map["created_at"], ISO8601DateTransform())
        updatedAt      <- (map["updated_at"], ISO8601DateTransform())
    }
}

kelas ini bekerja dengan benar.

import RealmSwift
import ObjectMapper

class Guide: Object, Mappable {

    dynamic var id : Int                = 0
    dynamic var title : String          = ""
    dynamic var spotName : String       = ""
    dynamic var placeId : String        = ""
    dynamic var explanation : String    = ""
    dynamic var category : String       = ""
    dynamic var totalPlayCount : Int    = 0
    dynamic var totalFavCount : Int     = 0
    dynamic var latitude : Double       = 0.0
    dynamic var longitude : Double      = 0.0
    dynamic var createdAt : NSDate      = NSDate()
    dynamic var updatedAt : NSDate      = NSDate()

    dynamic var navigator: Navigator?
    var relatedGuides = List<Guide>()

    override class func primaryKey() -> String {
        return "id"
    }

    // インデックス設定
    override static func indexedProperties() -> [String] {
        return ["name", "category", "firstImageUrl", "totalPlayCount"]
    }

    //  override static func ignoredProperties() -> [String] {
    //    return []
    //  }

    // Mark: - ObjectMapper

    required convenience init?(_ map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        id             <- map["id"]
        title          <- map["name"]
        spotName       <- map["spot.name"]
        explanation    <- map["description"]
        category       <- map["category.name"]
        totalPlayCount <- map["listen_count"]
        totalFavCount  <- map["favorite_count"]
        latitude       <- map["geometry.latitude"]
        longitude      <- map["geometry.longitude"]
        createdAt      <- (map["created_at"], ISO8601DateTransform())
        updatedAt      <- (map["updated_at"], ISO8601DateTransform())
    }
}

jadi bingung mau ngapain lagi.
seseorang tolong beri saya saran.

Komentar yang paling membantu

Hai,
Saya juga mengalami kesalahan yang sama saat mensubklasifikasikan objek yang dapat dipetakan.
Solusi kerja bagi saya adalah dengan menambahkan metode init (sama dengan kelas induk)

Jadi, dalam kasus di atas:

class WRUserSubclass: WRUser {

    required convenience init?(_ map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        // extended mapping here
    }
}

Semoga membantu

Semua 4 komentar

Hai, saya baru saja menguji kode ini dan saya tidak mendapatkan kesalahan. Apakah Anda masih mengalami masalah ini?

Saya memiliki masalah yang persis sama:

import ObjectMapper
import RealmSwift

class WRUser: Object, Mappable {

    dynamic var ID: Int = 0
    dynamic var email: String = ""

    // MARK: - Init

    required convenience init?(_ map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        ID <- map["user.id"]
        email <- map["user.email"]
    }

}

Sebenarnya membangun proyek memberikan kesalahan: Harus memanggil penginisialisasi yang ditunjuk dari superclass "WRUser"

Ada pikiran?

MEMPERBARUI:
Masalahnya hanya terjadi jika saya membuat subkelas WRUser, katakanlah WRUserClient. Selama WRUser adalah kelas yang tidak memiliki subkelas, proyek dikompilasi.

@nashirox apakah Anda subkelas?

Adakah yang tahu mengapa ini terjadi?

Memiliki masalah yang sama dengan subkelas dari objek lain yang dapat dipetakan. Masalah ini mengatakan ditutup tetapi tampaknya tidak ada solusi?

Hai,
Saya juga mengalami kesalahan yang sama saat mensubklasifikasikan objek yang dapat dipetakan.
Solusi kerja bagi saya adalah dengan menambahkan metode init (sama dengan kelas induk)

Jadi, dalam kasus di atas:

class WRUserSubclass: WRUser {

    required convenience init?(_ map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        // extended mapping here
    }
}

Semoga membantu

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

YunyueLin picture YunyueLin  ·  3Komentar

pcompassion picture pcompassion  ·  3Komentar

jperera84 picture jperera84  ·  4Komentar

adasoft-dev picture adasoft-dev  ·  3Komentar

delbyze picture delbyze  ·  3Komentar