使用 Swift 最佳实践解析 PFUser 子类注册
Parse PFUser Subclass Sign Up using Swift Best Practice
我刚刚下载并试用了 Parse。
一切都按预期工作,但我对良好的子类设计有疑问。
标准 PFUser 默认有三个字段。
- 用户名
- 电子邮件地址
- 密码
我想向用户 table 添加一些 "column"。它们是:
- 名字
- 姓氏
- phone(可选)
- 个人资料图片
下面是我的子类设计,但我不确定这是否是人们想要子类化他们的 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;
}
}
}
问题:
我想知道对 PFUser 进行子类化(以便向其添加列)的最佳方法是什么,当然还有可能的最佳设计。你有什么设计想法吗?
我们是否应该覆盖 init 方法并实例化所有变量(firstName、lastName、phone 等),以便在注册时创建可选字段列?
我应该摆脱那些 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
class:
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
}
}
我刚刚下载并试用了 Parse。
一切都按预期工作,但我对良好的子类设计有疑问。
标准 PFUser 默认有三个字段。
- 用户名
- 电子邮件地址
- 密码
我想向用户 table 添加一些 "column"。它们是:
- 名字
- 姓氏
- phone(可选)
- 个人资料图片
下面是我的子类设计,但我不确定这是否是人们想要子类化他们的 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;
}
}
}
问题:
我想知道对 PFUser 进行子类化(以便向其添加列)的最佳方法是什么,当然还有可能的最佳设计。你有什么设计想法吗?
我们是否应该覆盖 init 方法并实例化所有变量(firstName、lastName、phone 等),以便在注册时创建可选字段列?
我应该摆脱那些 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
class:
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
}
}