我有一个PFObject
,Account
,它包含一个User
的数组,它们是PFUsers
的子类。 User
然后有一个NSDictonary
属性,allowableApps
,这是一个NSDictionary
的数组,其中他们的数组包含PFObject
s。PFObject上的关系查询
所以,作为一个结构:
帐户
var users: [User]
指向....
用户
// Each key is an array of AllowApp
var allowableApps: NSMutableDictionary
指向...
AllowableApp
var appName: String
var appURL: String
var isAllowed: Bool
我想在一个查询来获取所有这些关系到AllowableApp
。我试过使用这样的.includeKey
:
accountQuery?.includeKey("users")
accountQuery?.includeKey("allowableApps")
哪没有工作。我也试过:
accountQuery?.includeKey("users.allowableApps.appName")
accountQuery?.includeKey("users.allowableApps.appURL")
accountQuery?.includeKey("users.allowableApps.isAllowed")
我尝试填充所有的AllowableApp
对象UITableView
,但是我得到这个错误:
Key "appName" has no data. Call fetchIfNeeded before getting its value.
我的理解,我需要获取所有的他们在尝试访问appName
财产之前。 (我试图设置cellForRowAtIndexPath
)。
这里是我完整的查询:
let currentUser = User.currentUser()
let accountQuery = Account.query()
accountQuery?.whereKey("primaryUser", equalTo: currentUser!)
accountQuery?.includeKey("users.allowableApps")
accountQuery?.getFirstObjectInBackgroundWithBlock({ (account, error) in
if (error != nil) {
completion(users: nil, error: error)
}
else {
let users = (account as? Account)!.users
completion(users: users, error: nil)
}
})
我的想法,现在是刚刚通过的所有AllowableApp
对象的循环中调用viewDidAppear
fetchInBackgroundWithBlock
。然后一旦他们全部加载,我重新加载表格数据。
这似乎真的很混乱和一个共同的问题。有没有更好的解决方案,我只是没有看到?
嘿感谢您的回复!如果有意义的话,我的结构更多的是'Account' - >'Users' - >'AllowableApps'。此外,我正在使用'NSMutableDictionary',因为他们的键是我的表中的节标题视图。我想我理论上可以有一个'AppCategory',它是一个'PFObject',它有一个'AllowableApps'数组,但它看起来很健壮,只是持有一个类别名称。 – random
嗨,是的,允许的应用程序应该在用户下,我想我的缩进现在工作得很好:)(我会更新我的答案)。无论如何,请根据答案尝试更改您的代码,因为我指的是与您相同的结构。 –
我已更新我的问题以获取正在运行的完整查询。当我尝试你的建议代码时,我得到一个错误“只能包含指针字段”? – random