使用数组指针和swift 1.2进行PFSubclassing - 致命错误:NSArray元素无法匹配Swift数组元素类型

Ant*_*oir 6 ios parse-platform swift pfsubclassing

使用swift 1.2,我无法再使用parse子类检索一个poiter数组,并使用另一个parse子类向下转换它.

我总是发现错误:

fatal error: NSArray element failed to match the Swift Array Element type
Run Code Online (Sandbox Code Playgroud)

你有想法还是可能来?

代码:

import Foundation

class ShotModel : PFObject, PFSubclassing {

    /**
    * MARK: Properties
    */
    @NSManaged var name: String

    @NSManaged var pics: [PicModel]


    override class func initialize() {
        var onceToken : dispatch_once_t = 0;
        dispatch_once(&onceToken) {
            self.registerSubclass()
        }
    }

    class func parseClassName() -> String! {
        return "Shot"
    }

}

import Foundation

class PicModel : PFObject, PFSubclassing {

    /**
    * MARK: Properties
    */
    @NSManaged var name: String


    override class func initialize() {
        var onceToken : dispatch_once_t = 0;
        dispatch_once(&onceToken) {
            self.registerSubclass()
        }
    }

    class func parseClassName() -> String! {
        return "Pic"
    }

}

// this cause error

var shot: ShotModel = // a shot model get with fetchInBackgroundWithBlock

shot.pics // fatal error: NSArray element failed to match the Swift Array Element type
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间

Ant*_*oir 15

问题来自这部分代码:

override class func initialize() {
    var onceToken : dispatch_once_t = 0;
    dispatch_once(&onceToken) {
        self.registerSubclass()
    }
}
Run Code Online (Sandbox Code Playgroud)

registerSubclass()对于PicModel,之前调用registerSubclass()ShotModel.

我已经在AppDelegate中解决了这个问题:

PicModel.registerSubclass()
ShotModel.registerSubclass()
Run Code Online (Sandbox Code Playgroud)

  • 难以置信:这就像一个魅力! (2认同)