2015-11-01 10 views
15

Prosta rzecz, która sprawia mi ból głowy - jak zainicjować obiekt zgodny z protokołem mappable, bez żadnego JSON-a.ObjectMapper - zainicjuj obiekt IOS

Co chciałbym zrobić, to po prostu zainicjować pusty obiekt użytkownika w kodzie tak:

let user = User() 

jednak, że daje mi błąd: „brakujący argument dla parametru # 1 w zaproszeniu”

Udało mi się to zrobić w wersji 0.14 z Swift 1.2, ale teraz to nie działa. Czy wiecie, jak to zrobić teraz w szybkim 2 i nowym Object Mapper? (Wiem jak zainicjować go z json itp, po prostu chcę, aby zainicjować ten obiekt do innych celów i nie mogę dowiedzieć się, w jaki sposób)

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

proszę o pomoc!

Odpowiedz

19

Poniższy powinno działać:

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 błędy: na override init() "Initilaizer nie zastępuje wyznaczony inicjator od jej nadrzędnej", obok error on self.init() -> "Wartość typu" _ -> _ "nie ma członka '' init" – Ammo

+0

Nie mam takich błędów. pod 'ObjectMapper', '~> 1.0'; Swift 2.1. może spróbować usunąć override init() {super.init()}. –

+0

@SergeyDemchenko Mam ten sam błąd co amunicja i usuwanie override init() pokonuje cel. ObjectMapper 1.2 Swift 2.2 – Questioner

7

Poprawiona wersja powyższego odpowiedź:

init() {} 
required convenience init?(_ map: Map) { self.init() } 
Powiązane problemy