在iOS中获取分层用户信息的最佳做法
在iOS中获取分层用户信息的最佳做法,ios,parse-platform,Ios,Parse Platform,我意识到这个问题有点主观,可能会被关闭,但Parse.com已经指定StackOverflow作为其当前(唯一)支持模型。请在投票结束前阅读问题,以避免歧义。我很乐意编辑这个问题以消除歧义,但我相信这是问这个问题的正确地方(鉴于Parse.com删除了他们的论坛)。 我没有看到解析文档中包含我的特定案例,因此我想问两件事: 我这样做对吗 有更好的办法吗?看来一定有 我有一个具有以下数据结构的应用程序: 用户-->项(PFObject的数组) 项目-->类别(指向PFObject的指针) 类别
我意识到这个问题有点主观,可能会被关闭,但Parse.com已经指定StackOverflow作为其当前(唯一)支持模型。请在投票结束前阅读问题,以避免歧义。我很乐意编辑这个问题以消除歧义,但我相信这是问这个问题的正确地方(鉴于Parse.com删除了他们的论坛)。
我没有看到解析文档中包含我的特定案例,因此我想问两件事:
名称(类别属性)
说明(类别的属性) 我想运行一个查询,返回用户、他们的项目和每个项目的类别的最新信息,返回每个级别的实际信息(包括类别名称和描述,如
NSString
值),而不仅仅是需要获取的指针
我最初是访问PFUser
对象的NSArray
指针并调用:
PFUser *currentUser = [PFUser currentUser];
NSArray *items = currentUser[@"items"];
[PFObject fetchAllIfNeededInBackground:items block:^(NSArray *items, NSError *error) {
// Do whatever
}
];
但是,这个方法阻止了我(我想)访问每个项目的category属性(它是指向另一个PFObject
的指针)
我目前的做法如下:
PFUser *currentUser = [PFUser currentUser];
PFQuery *query = [PFUser query];
[query whereKey:@"objectId" equalTo:currentUser.objectId];
[query includeKey:@"items.category"];
[query findObjectsInBackgroundWithBlock:^(NSArray *vaultItems, NSError *error) {
if (error != nil) {
// Handle error
} else {
// Got good data
}
}
];
我仍在将实际数据充实到我的设计中,但这似乎可以正常工作,并返回可用信息,没有错误
然而,这似乎不可能是正确的方法。是否有人可以验证我的代码/方法,或为我提供执行此操作的标准方法
更新:
此外,这种运行查询的方法不会自动更新当前用户存储的本地信息(
[PFUser currentUser]
)。因此,基本上,有没有一种方法可以刷新单个对象,告诉服务器您要填充某些子对象?您可以在include语句中使用点表示法,这将带来第二个级别。这有帮助吗?您可以调用fetch
或fetchInBackground:
刷新对象,但您不能指定任何包含(不确定它是否包含指针)。否则,请使用GetObjectInBackgroundHitid:block:
加载一个不支持包含的对象。@TimothyWalters我了解这两个选项以及它们的工作方式。但是,我试图做的是(本质上)调用[PFUser currentUser]
在将来将新数据更新为[PFUser currentUser]
。我正试图避免处理自定义的、单独的数据存储,这些数据在现有项目上应该是“可存储的”/“可刷新的”。有道理?我想在我看来,我应该能够在fetch
调用上指定include,至少在PFUser
实例上是这样。有点,但不是真的。我可以获取用户项目的列表,并使用“include”获取子项目,但这实际上并不填充到[PFUser currentUser]对象。因此,我不得不在一个单独的区域中跟踪当前用户的项目,这对我来说似乎非常奇怪。我正在寻找一种方法来刷新(获取、获取、我不在乎)当前用户并包括子项,然后(这是关键点)在[PFUser currentUser]对象中提供该信息。有道理?对我来说,这似乎是一个奇怪的遗漏。