【发布时间】:2016-12-12 03:26:31
【问题描述】:
我有一个PFObject、Account,其中包含Users 的数组,它们是PFUserss 的子类。然后User 有一个NSDictonary 属性allowableApps,这是数组的NSDictionary,其中数组包含PFObjects。
所以作为一个结构:
帐户
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)
}
})
我现在的想法是循环遍历viewDidAppear 中的所有AllowableApp 对象,调用fetchInBackgroundWithBlock。然后,一旦它们全部加载完毕,我就会重新加载表数据。
这看起来真的很混乱,而且是一个常见问题。有没有更优雅的解决方案,我只是没有看到?
【问题讨论】:
标签: swift parse-platform pfobject