[英]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.