使用Swift最佳实践解析PFUser子类注册



我刚刚下载并试用了Parse。

一切工作如预期,但我有一个关于一个好的子类设计的问题。

标准的PFUser默认有三个字段。

  1. 用户名
  2. emailAddress

我想在User表中添加更多的"列"。这些都是:

  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等),以便在注册时创建可选字段列?

  3. 我应该摆脱那些didSets块吗?如果是,你能建议一个更好的设计吗?

在我看来,实现您想要的最简单的方法是使用存储的@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()
}

写一个扩展呢?

类似:

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

最新更新