2015-07-10 19 views
0

如果任何人有使用Swift使用Parse的任何經驗,特別是PFObject的子類.....我無法弄清楚爲什麼下面的saveinbackground調用拋出上述錯誤?解析/ Swift致命錯誤:使用未實現的初始化'init()

謝謝!

func saveNewPerson(name: String) { 

     var myPeeps = [Person]() 

     if let currentUser = PFUser.currentUser() { 

      if currentUser.valueForKey("myPeeps")?.count < 1 { 
       myPeeps = [] 
      } else { 
       myPeeps = currentUser.valueForKey("myPeeps") as! [Person] 
      } 

      let newPerson = Person(name: name, stores: [:]) 

     myPeeps.append(newPerson) 

     currentUser.setObject(myPeeps, forKey: "myPeeps") 

     println(currentUser.valueForKey("myPeeps")?.count) 


       //WHY DOES THIS SAVE THROW ERROR FOR NOT INITIALZING? 
     currentUser.saveInBackgroundWithBlock{ succeeded, error in 
      if succeeded { 
       //3 
       println("Saved") 
      } else { 
       //4 
       if let errorMessage = error?.userInfo?["error"] as? String { 
        self.showErrorView(error!) 
        } 
       } 
      } 
     } 
    } 

這是我的Person類:

class Person: PFObject, PFSubclassing { 

    override class func initialize() { 
     struct Static { 
      static var onceToken : dispatch_once_t = 0; 
     } 
     dispatch_once(&Static.onceToken) { 
      self.registerSubclass() 
     } 
    } 

    static func parseClassName() -> String { 
     return "Person" 
    } 

    var name: String = "" 
    var stores: [String : Store] = [:] 

    init(name: String, stores: [String : Store]) { 
    self.name = name 
    self.stores = stores 

    super.init() 
} 

} 

我的商店類別:

class Store: PFObject, PFSubclassing { 


    override class func initialize() { 
     struct Static { 
      static var onceToken : dispatch_once_t = 0; 
     } 
     dispatch_once(&Static.onceToken) { 
      self.registerSubclass() 
     } 
    } 

    static func parseClassName() -> String { 
     return "Store" 
    } 


    var name: String = "" 
    var clothingSizes: [String: String] = [:] 


    init(name: String, clothingSizes: [String: String]){ 
     self.name = name 
     self.clothingSizes = clothingSizes 
     super.init() 
    } 
} 
+0

@ luk2302不,省略括號完全沒問題。 – matt

+0

@matt好的,不確定。 – luk2302

+0

@PSU錯誤發生在哪條線上? – matt

回答

5

對於這兩種解析子類,你需要讓你的inits方便inits。基本上,這是怎麼回事是有沒有實現的init(),你可以做,通過調用

override init() { 

    super.init()  

} 

另一種選擇是讓你的init便利初始化,並調用self.init()

convenience init(name: String, stores: [String : Store]) { 

    self.init() 
    self.name = name 
    self.stores = stores 

} 
相關問題