解析 - 使用 'includeKey' 的查询未在适当的子类中获得 objects
Parse - Query with 'includeKey' not getting objects in proper subclass
我正在尝试获取一个 Parse object、'Pack',它有一个指向另一个 parse class、'Cards' 的指针数组。
当我查询 'Pack' 并包含 'includeKey("cards")' 时,它实际上会下载那些 object,但无法将它们转换为我的子 class 'Card' 和相反默认为 "PFObject"。
当试图在 'pack' 中遍历 'cards' 并打印标题时,它给我一个类型不匹配错误:
fatal error: NSArray element failed to match the Swift Array Element type
在调试器中检查 'pack' object,我发现 'cards' 属性(数组)具有所有预期的 object,但它们显示为 'PFObject' class.
解析'Pack'子class:
class Pack: PFObject, PFSubclassing {
override class func initialize() {
var onceToken : dispatch_once_t = 0;
dispatch_once(&onceToken) {
self.registerSubclass()
}
}
static func parseClassName() -> String {
return "Pack"
}
var cards: [Card] {
get {
return self["cards"] as! [Card]
}
set {
self["cards"] = newValue
}
}
... other properties...
}
正在获取解析 Object "Pack":
func fetchPackWithTitle(title: String) -> Pack {
if let query = Pack.query() {
query.whereKey("title", equalTo:"\(title)")
query.includeKey("cards")
do {
let results = try query.findObjects()
if results.count > 0 {
// Found it...
return results.first as? Pack
}
} catch {
return nil
}
}
return nil
}
正在尝试为包中的卡片打印卡片标题:
if let pack = fetchPackWithTitle("Basic") {
for card in pack.cards {
print("Title: \(card.title)")
}
}
解决了问题。有问题的 class 实际上保存了一个不包含预期指针的坏对象,而 subclass 隐式解包指针数组:
var cards: [Card] {
get {
return self["cards"] as! [Card]
}
set {
self["cards"] = newValue
}
}
更新到这里并解决了问题:
var cards: [Card]? {
get {
return self["cards"] as? [Card]
}
set {
self["cards"] = newValue
}
}
我正在尝试获取一个 Parse object、'Pack',它有一个指向另一个 parse class、'Cards' 的指针数组。 当我查询 'Pack' 并包含 'includeKey("cards")' 时,它实际上会下载那些 object,但无法将它们转换为我的子 class 'Card' 和相反默认为 "PFObject"。 当试图在 'pack' 中遍历 'cards' 并打印标题时,它给我一个类型不匹配错误:
fatal error: NSArray element failed to match the Swift Array Element type
在调试器中检查 'pack' object,我发现 'cards' 属性(数组)具有所有预期的 object,但它们显示为 'PFObject' class.
解析'Pack'子class:
class Pack: PFObject, PFSubclassing {
override class func initialize() {
var onceToken : dispatch_once_t = 0;
dispatch_once(&onceToken) {
self.registerSubclass()
}
}
static func parseClassName() -> String {
return "Pack"
}
var cards: [Card] {
get {
return self["cards"] as! [Card]
}
set {
self["cards"] = newValue
}
}
... other properties...
}
正在获取解析 Object "Pack":
func fetchPackWithTitle(title: String) -> Pack {
if let query = Pack.query() {
query.whereKey("title", equalTo:"\(title)")
query.includeKey("cards")
do {
let results = try query.findObjects()
if results.count > 0 {
// Found it...
return results.first as? Pack
}
} catch {
return nil
}
}
return nil
}
正在尝试为包中的卡片打印卡片标题:
if let pack = fetchPackWithTitle("Basic") {
for card in pack.cards {
print("Title: \(card.title)")
}
}
解决了问题。有问题的 class 实际上保存了一个不包含预期指针的坏对象,而 subclass 隐式解包指针数组:
var cards: [Card] {
get {
return self["cards"] as! [Card]
}
set {
self["cards"] = newValue
}
}
更新到这里并解决了问题:
var cards: [Card]? {
get {
return self["cards"] as? [Card]
}
set {
self["cards"] = newValue
}
}