2015-05-26 79 views
1

我剛剛下載並試用了Parse。解析PFUser子類使用Swift最佳實踐註冊

一切按預期工作,但我有一個關於良好的子類設計的問題。

默認情況下,標準PFUser具有三個字段。

  1. 用戶名
  2. EMAILADDRESS
  3. 密碼

我想多了一些 「列」 添加到用戶表。這些都是:

  1. 的firstName
  2. lastName的
  3. 電話(可選)
  4. profilePicture

下面是我的子類的設計,但我不知道這是一個可能想要的方式將他們的PFUser進行子類化。

import UIKit 

class GPUser: PFUser, PFSubclassing { 
    var firstName: String? { 
     didSet { 
      self["firstName"] = firstName; 
     } 
    } 
    var lastName: String? { 
     didSet { 
      self["lastName"] = lastName; 
     } 
    } 
    var phone: String? { 
     didSet { 
      self["phone"] = phone; 
     } 
    } 
    var profilePicture: PFFile? { 
     didSet { 
      self["profilePicture"] = profilePicture; 
     } 
    } 
} 

問題:

  1. 我想知道什麼是子類PFUser(以列添加到它),最好的辦法,當然最好的設計成爲可能。你有沒有設計?

  2. 我們應該重寫init方法並實例化所有變量(firstName,lastName,phone等),以便在signUp上創建可選字段列嗎?

  3. 我應該擺脫那些didSets塊嗎?如果是的話,你可以建議一個更好的設計?

回答

2

在我看來,要實現你想要的最簡單的方法是使用存儲@NSManaged性質:

class GPUser: PFUser, PFSubclassing { 
    @NSManaged var firstName: String 
    @NSManaged var lastName: String 
    @NSManaged var phone: String 
    @NSManaged var profilePicture: PFFile 

    class func parseClassName() -> String! { 
     return "YourParseClassName" 
    } 
} 

不要忘了在AppDelegate您的自定義PFUser類註冊:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    GPUser.registerSubclass() 
} 
+0

它的工作原理,謝謝。請注意,PFUser子類中不需要類fun​​c parseClassName() – JayVDiyk

1

如何編寫擴展名?

喜歡的東西:

extension PFUser { 

    var picture:PFFile? { 
     get { 
      return self["picture"] as? PFFile 
     } 
     set { 
      self["picture"] = newValue 
     } 
    } 

    var name:String?{ 
     get { 
      return self["name"] as? String 
     } 
     set { 
      self["name"] = newValue 
     } 
    } 

    var score:Int? { 
     return self["score"] as? Int 
    } 
}