2015-11-01 4 views
15

सरल चीज जो मुझे सिरदर्द दे रही है - किसी ऑब्जेक्ट को प्रारंभ करने के लिए कैसे मैप करने योग्य प्रोटोकॉल के अनुरूप है, बिना किसी JSON के।ऑब्जेक्टमैपर - ऑब्जेक्ट IOS

मैं करना चाहते हैं क्या, बस इस तरह कोड में खाली उपयोगकर्ता वस्तु आरंभ है:

let user = User() 

लेकिन है कि मुझे त्रुटि देता है:

"लापता कॉल में # 1 पैरामीटर के लिए तर्क" मैं इसे स्विफ्ट 1.2 के साथ संस्करण 0.14 में करने में सक्षम था, लेकिन अब यह काम नहीं करता है। क्या आप लोग जानते हैं कि अब इसे स्विफ्ट 2 और नया ऑब्जेक्ट मैपर में कैसे करें? (मुझे पता है कि 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()) 
} 
} 

कृपया मदद!

उत्तर

19

निम्नलिखित काम करना चाहिए:

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 त्रुटियों: ओवरराइड init पर() "Initilaizer अपने सुपर क्लास से एक नामित प्रारंभकर्ता पर हावी नहीं होता", अगले self.init पर त्रुटि() -> "प्रकार का मूल्य '_ -> _" कोई सदस्य नहीं है "init" – Ammo

+0

मेरे पास ऐसी त्रुटियां नहीं हैं। पॉड' ऑब्जेक्टमैपर ',' ~> 1.0 '; स्विफ्ट 2.1। आप ओवरराइड init() {super.init()} को हटाने का प्रयास कर सकते हैं। –

+0

@ सेर्गेडी डेमचेन्को मुझे एएमओ और हटाने के समान त्रुटि मिली ओवरराइड init() उद्देश्य को हरा देता है। ऑब्जेक्टमैपर 1.2 स्विफ्ट 2.2 – Questioner

7

ऊपर जवाब का फिक्स्ड संस्करण:

init() {} 
required convenience init?(_ map: Map) { self.init() } 
संबंधित मुद्दे