使用Swid1.2,我不再能够检索带有解析子类的poiter数组,并使用另一个解析子类向下转换它。
我总是发现错误:
fatal error: NSArray element failed to match the Swift Array Element type你有什么主意或者可能会来吗?
守则:
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耽误您时间,实在对不起
发布于 2015-03-13 12:46:03
问题来自于代码的这一部分:
override class func initialize() {
var onceToken : dispatch_once_t = 0;
dispatch_once(&onceToken) {
self.registerSubclass()
}
}registerSubclass() for ShotModel在registerSubclass() for PicModel之前调用。
我已经在AppDelegate中解决了这个问题:
PicModel.registerSubclass()
ShotModel.registerSubclass()发布于 2015-05-06 17:08:52
问题在于ShotModel在PicModel之前注册为子类。相反,我们可以将PicModel初始化称为ShotModel的初始化。
通过这种方式,我们通过解析来保留建议的解决方案,并确保类按照正确的顺序注册。
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) {
PicModel.initialize()
self.registerSubclass()
}
}发布于 2015-04-09 15:15:23
不知何故,在AppDelegate中注册之后,我也不得不插入对象。
PicModel.registerSubclass()
PicModel()
ShotModel.registerSubclass()
ShotModel()https://stackoverflow.com/questions/29029148
复制相似问题