簡體   English   中英

在Swift中對Parse的PFUser進行子類化

[英]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子類沖突。

要解決此問題,您可以:

  1. 重新啟動模擬器。
  2. 在AppDelegate中的PFUser.logOut()之后立即調用PFUser.logOut()來刷新緩存的用戶。

希望這有助於將來的其他人!

我通過更改初始視圖控制器解決了這個問題。 它沒有注冊用戶,因為它沒有通過先前聲明/識別用戶是誰的視圖控制器。

我具體做了什么:

  1. 設置初始視圖控制器,用於捕獲用戶身份的控制器,然后將您的路徑轉移到您想要的位置。
  2. 重啟模擬器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM