我正在将iOS应用转换为Android。该应用程序使用Parse作为后端。 我坚持这个特定的行(嵌套指针,如果我是正确的):
userQuery.includeKey("favoriteHouses.landlord")
现在我不知道如何将其转换为Android:
parseQuery.include("favoriteHouses.landlord");
上述转换不会产生任何结果。
实际上,我能够获得指针数组。但我还想检索另一个表中名为landlord的字段中存在的用户表行。 情况就是这样:我有两张桌子:一张是“House”,另一张是“User”。用户可以标记喜欢的房屋。因此,最喜欢的标记房屋存储为用户表中的指针数组。这些指针指向房屋表中的房屋。在house表中,有一个名为landlord的指针类型字段,它包含用户的对象id并且是指针类型。因此,在获取那些最喜欢的房子时,我也希望用户通过使用指向用户表的房东指针。
我翻译成android的整个代码是:
// A query which will return the internal array of the object received by the objectQuery
class PFArrayQuery: PFQuery {
var objectQuery: PFQuery
var returnsKey: String
init(className: String, objectQuery: PFQuery, returnsKey: String) {
self.objectQuery = objectQuery
self.returnsKey = returnsKey
super.init(className: className)
}
override func findObjectsInBackgroundWithBlock(block: PFQueryArrayResultBlock?) {
objectQuery.getFirstObjectInBackgroundWithBlock { (result: PFObject?, error: NSError?) in
if let error = error {
block?(nil, error)
} else if let array = result?[self.returnsKey] as? [PFObject] {
block?(array, nil)
} else {
block?([], nil)
}
}
}
}
现在上面的类使用如下:
override func queryForTable() -> PFQuery {
let emptyQuery = PFQuery()
guard let user = User.currentUser(),
userQuery = User.query() else {
return emptyQuery
}
let query = PFArrayQuery(className: "House", objectQuery: userQuery,
returnsKey: "favoriteHouses")
userQuery.includeKey("favoriteHouses")
// this is the line which I am unable to translate.
**userQuery.includeKey("favoriteHouses.landlord")**
userQuery.whereKey("objectId", equalTo: user.objectId ?? "")
return query
}
现在我的翻译代码是:
ParseQuery parseQuery = ParseQuery.getQuery("House");
parseQuery.include("favoriteHouses");
parseQuery.include("favoriteHouses.landlord");
parseQuery.whereEqualTo("objectId",ParseUser.getCurrentUser().getObjectId());
我还在this页面上解释了我的情况:
请纠正我。
由于