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
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()