iosparse-platformswiftpfsubclassing

PFSubclassing with array pointer and swift 1.2 - fatal error: NSArray element failed to match the Swift Array Element type


With swift 1.2, I can no longer retrieve an array of poiter with parse subclass and downcasting it with another parse subclass.

I always found the error:

fatal error: NSArray element failed to match the Swift Array Element type

Do you have an idea or it may come?

The code:

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

Thanks for your time


Solution

  • The problem come from this part of code :

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

    registerSubclass() for ShotModel is called before registerSubclass() for PicModel.

    I've resolved with this in AppDelegate :

    PicModel.registerSubclass()
    ShotModel.registerSubclass()