[英]Subclassing Parse's PFUser in Swift
首先,我知道之前已经提出了类似的问题,并且我尝试遵循此 stackoverflow答案的建议,但无济于事。 我也尝试添加这个的基本要点作为评论,但我还没有足够的代表:(基本上我试图使用PFSubclassing来扩展Parse的PFUser模型。因此,这是我的相应代码:
User.swift:
import Foundation
import CoreLocation
class User : PFUser, PFSubclassing {
override init() {
super.init()
}
convenience init(email: String!) {
self.init()
self.email = email
self.username = email
}
// don't need to call User.registerSubclass() in AppDelegate because this
// is handling that here
override class func load() {
self.registerSubclass()
}
// Commented out because this is extending PFUser
// override class func parseClassName() -> String! {
// return "PFUser"
// }
}
测试结果:
-[PFObject _loadSensitiveUserDataFromKeychainItemWithName:]: unrecognized selector sent to instance 0x7f98ebc1c250
我也在我的Bridging-Header中执行以下操作:
#import <Parse/Parse.h>
#import <Parse/PFObject+Subclass.h>
如果我在User.swift中取消注释“parseClassname()”,我得到:
failed: caught "NSInvalidArgumentException", "Cannot initialize a PFUser with a custom class name."
这让我相信设置界面至少部分有效。
基于我所见过的所有建议,我似乎无法弄清楚我做错了什么。 还有一个开放的错误产生相同的错误消息,但它是由使用Parse的本地数据存储引起的,我还没有配置任何。
在这一点上,我觉得我错过了一些显而易见的东西,或者我受到了上面提到的同样的错误的影响。 有什么建议?
好的,通过反复试验解决了我自己的问题。 基本上它看起来像缓存登录PFUser导致问题。 当Parse最初加载时,它从模拟器加载登录状态,该模拟器与新注册的User子类冲突。
要解决此问题,您可以:
PFUser.logOut()
之后立即调用PFUser.logOut()
来刷新缓存的用户。 希望这有助于将来的其他人!
我通过更改初始视图控制器解决了这个问题。 它没有注册用户,因为它没有通过先前声明/识别用户是谁的视图控制器。
我具体做了什么:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.