2015-11-01 22 views
15

Başım ağrıyor olan basit bir şey - henüz herhangi bir JSON olmadan, eşlenebilir protokolle uyumlu bir nesneyi nasıl başlatılır. Ben yapmak istiyorum neObjectMapper - nesne başlatılıyor IOS

, basitçe böyle kodda boş Kullanıcı nesnesini initialize geçerli:

bana hata veriyor ancak
let user = User() 

:

"çağrısında parametre # 1 için eksik argüman" Hızlı 1.2 ile 0.14 sürümünde yapabiliyordum, ama şimdi çalışmıyor. Şimdi hızlı 2 ve yeni Nesne Eşleştiricisi'nde bunu nasıl yapacağınızı biliyor musunuz? (Ben json vb ile nasıl başlatıldığını biliyorum, sadece başka amaçlar için bu nesneyi başlatmak istiyorum ve anlamaya olamaz)

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()) 
} 
} 

yardım lütfen!

cevap

19

çalışmalıdır: Yukarıdaki cevabın

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()) 
} 
} 
+1

2 hataları: geçersiz kılma init üzerinde() "Initilaizer onun üst sınıftan belirlenen başlatıcı geçersiz kılmaz", bir sonraki error on self.init() -> "Type of value" _ -> _ "'init' 'init yok' 'init var' – Ammo

+0

Böyle bir halim yok. pod 'ObjectMapper', '~> 1.0'; Swift 2.1. init() {super.init()} geçersiz kılmayı deneyebilirsiniz. –

+0

@SergeyDemchenko Ammo ile aynı hatayı aldım ve init() geçersiz kılma amacı yener. ObjectMapper 1.2 Swift 2.2 – Questioner

7

Sabit versiyon:

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