簡體   English   中英

PFObject子類化:NSArray元素與Swift Array元素類型不匹配

[英]PFObject Subclassing: NSArray element failed to match the Swift Array Element type

我正在嘗試為PFObject(子類化)創建一個自定義類,這似乎很好,但是當我嘗試轉換/使用自定義類對象作為常規PFObject時,它搞砸了。 這就是我想要做的。

首先, 出於測試原因, 我創建了名為 NewPFObject 的自定義類

注意:我 在設置應用程序ID之前在AppDelegate中 調用 NewPFObject.registerSubclass()

class NewPFObject: PFObject, PFSubclassing {

    static func parseClassName() -> String {
        return "NewPFObject"
    }

    override init(className:String) {
        super.init(className: className)
    }

}

然后,我有了使用該方法的方法,以使Async調用更加輕松和流暢:

func GetAsyncObjects(query:STARCQuery, doNext: (dataObjects:[NewPFObject]) -> ()) {
    query.findObjectsInBackgroundWithBlock { (newObjects:[PFObject]?, error:NSError?) -> Void in

        if error == nil {
            doNext(dataObjects: newObjects as! [NewPFObject])
        }

    }
}

最后,我有一個用例,其中發生了錯誤。

let query:PFQuery = PFQuery.init(className: "MyCustomClassInParse")

GetAsyncObjects(query) { (dataObjects) -> () in

    if(dataObjects.count > 0) {
        for customObject in dataObjects {
            //Do something with customObject data
        }
    }

}

用例中的錯誤與標題相同:

致命錯誤: NSArray元素與Swift Array Element類型不匹配

而且它發生在代碼的最后一塊,在for循環中使用dataObjects Array的那一行。

當嘗試多次強制轉換時,XCode會說這樣做是多余的,並且在實際運行代碼時沒有任何區別。 同樣的錯誤。

我實際上已經嘗試了一切,關於PFSubclassing的所有帖子以及Stackoverflow上的此錯誤,似乎都找不到解決方案,所以我希望有人願意幫助我!

謝謝!

您從parseClassName返回的值必須與parseClassName中定義的類名匹配,因此,在您的情況下, parseClassName將需要返回MyCustomClassInParse

這使Parse框架能夠將PFSubclassing類與Parse.com類進行匹配並返回適當的對象。 如果沒有匹配項,那么您只會得到普通的PFObject實例,這就是為什么在嘗試向下轉換時會出現運行時錯誤的原因。

暫無
暫無

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

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