我正在尝试获取一个Parse对象,'Pack'有一个指向另一个解析类的指针数组,'Cards'。 当我查询'Pack'并包含'includeKey(“cards”)'时,它确实会下载这些对象,但是无法将它们作为我的子类'Card'进行转换,而是默认为“PFObject”。 当试图在“包”中循环“卡片”并打印标题时,它会给我一个类型不匹配错误:
>>> (pd.read_csv('/Downloads/aaaa.csv',
skiprows=2,
skipinitialspace=True,
sep=' ',
names=['Index', 'Description',1,"1",2,'TOT'],
index_col=0)
.reset_index(drop=True)
.dropna(axis=0, how='all'))
Description 1 1 2 TOT
0 DEPTH(m) 0.01 1.24 1.52 NaN
1 BD 33kpa(t/m3) 1.60 1.60 1.6
2 SAND(%) 42.1 42.10 65.10 NaN
3 SILT(%) 37.9 37.90 16.90 NaN
4 CLAY(%) 20.0 20.00 18.00 NaN
5 ROCK(%) 12.0 12.00 12.00 NaN
6 WLS(kg/ha) 0.0 5.00 0.10 5.1
7 WLM(kg/ha) 0.0 5.00 0.10 5.1
8 WLSL(kg/ha) 0.0 4.00 0.10 4.1
9 WLSC(kg/ha) 0.0 2.10 0.00 2.1
10 WLMC(kg/ha) 0.0 2.10 0.00 2.1
11 WLSLC(kg/ha) 0.0 1.70 0.00 1.7
12 WLSLNC(kg/ha) 0.0 0.40 0.00 0.4
13 WBMC(kg/ha) 9.0 1102.10 250.90 1361.9
14 WHSC(kg/ha) 69. 8432.00 1920.00 10420.0
15 WHPC(kg/ha) 146. 18018.00 4102.00 22266.0
16 WOC(kg/ha) 224. 27556.00 6272.00 34.0
17 WLSN(kg/ha) 0.0 0.00 0.00 0.0
18 WLMN(kg/ha) 0.0 0.20 0.00 0.2
19 WBMN(kg/ha) 0.9 110.20 25.10 136.2
20 WHSN(kg/ha) 7. 843.00 192.00 1042.0
21 WHPN(kg/ha) 15. 1802.00 410.00 2227.0
22 WON(kg/ha) 22. 2755.00 627.00 3405.0
23 CFEM(kg/ha) 0. NaN NaN NaN
检查调试器中的'pack'对象,我看到'cards'属性(数组)具有所有预期的对象,但它们显示为具有'PFObject'类。
Parse'Pack'子类:
fatal error: NSArray element failed to match the Swift Array Element type
获取解析对象“Pack”:
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...
}
尝试打印包装卡的卡片标题:
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
}