gpt4 book ai didi

swift - PFObject 的关系查询

转载 作者:行者123 更新时间:2023-11-30 13:10:29 27 4
gpt4 key购买 nike

我有一个PFObjectAccount,其中包含一个User数组,它们是PFUsers的子类。然后,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。然后,一旦它们全部加载,我就会重新加载表数据。

这看起来确实很困惑,而且是一个常见问题。有没有我没有看到的更优雅的解决方案?

最佳答案

据我了解,您具有以下结构:

  • 帐户
    • 用户(用户数组)
      • AllowsableApps(AllowApps 数组)

首先将NSMutableDictionary更改为Array。 NSMutableDictionary 是一种键值对,在解析时您应该创建一个字段。所以你可以使用AllowApps数组,它会起到同样的效果。

为了获取每个帐户中的所有帐户和用户以及每个用户允许的应用程序,您需要构建以下查询:

    // You can do it with sub classing if you want
let query = PFQuery(className: "Account")
query.includeKey("users.allowableApps")
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
}

现在为您的用户数组。如果您的 users 数组是需要登录应用程序的用户,最好从 PFUser 继承,而不是从 PFObject 继承,因为 PFUser 包含以下所有逻辑在您的应用中处理用户。

关于swift - PFObject 的关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793879/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com