web-dev-qa-db-ja.com

ObjectMapper-オブジェクトを初期化しますIOS

私に頭痛の種を与えている単純なこと-まだJSONなしで、マッピング可能なプロトコルに準拠するオブジェクトを初期化する方法。

私がやりたいのは、次のようなコードで空のUserオブジェクトを初期化することです。

let user = User()

ただし、エラーが発生します:「呼び出しでパラメーター#1の引数がありません」

バージョン0.14でSwift 1.2で実行できましたが、現在は機能しません。Swift 2andで実行する方法を知っていますか。新しいオブジェクトマッパー?(jsonなどで初期化する方法を知っています。他の目的でそのオブジェクトを初期化したいだけですが、その方法がわかりません)

class User: Mappable {
var username: String?
var age: Int?
var weight: Double!
var array: [AnyObject]?
var dictionary: [String : AnyObject] = [:]
var bestFriend: User?                       // Nested User object
var friends: [User]?                        // Array of Users
var birthday: NSDate?

required init?(_ map: Map) {

}

// Mappable
func mapping(map: Map) {
    username    <- map["username"]
    age         <- map["age"]
    weight      <- map["weight"]
    array       <- map["arr"]
    dictionary  <- map["dict"]
    bestFriend  <- map["best_friend"]
    friends     <- map["friends"]
    birthday    <- (map["birthday"], DateTransform())
}
}

助けてください!

17
Ammo

以下が機能するはずです。

class User: NSObject, Mappable {
var username: String?
var age: Int?
var weight: Double!
var array: [AnyObject]?
var dictionary: [String : AnyObject] = [:]
var bestFriend: User?                       // Nested User object
var friends: [User]?                        // Array of Users
var birthday: NSDate?

override init() {
    super.init()
}

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

// Mappable
func mapping(map: Map) {
    username    <- map["username"]
    age         <- map["age"]
    weight      <- map["weight"]
    array       <- map["arr"]
    dictionary  <- map["dict"]
    bestFriend  <- map["best_friend"]
    friends     <- map["friends"]
    birthday    <- (map["birthday"], DateTransform())
}
}
23

上記の回答の修正バージョン:

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