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