Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中获取分层用户信息的最佳做法_Ios_Parse Platform - Fatal编程技术网

在iOS中获取分层用户信息的最佳做法

在iOS中获取分层用户信息的最佳做法,ios,parse-platform,Ios,Parse Platform,我意识到这个问题有点主观,可能会被关闭,但Parse.com已经指定StackOverflow作为其当前(唯一)支持模型。请在投票结束前阅读问题,以避免歧义。我很乐意编辑这个问题以消除歧义,但我相信这是问这个问题的正确地方(鉴于Parse.com删除了他们的论坛)。 我没有看到解析文档中包含我的特定案例,因此我想问两件事: 我这样做对吗 有更好的办法吗?看来一定有 我有一个具有以下数据结构的应用程序: 用户-->项(PFObject的数组) 项目-->类别(指向PFObject的指针) 类别


我意识到这个问题有点主观,可能会被关闭,但Parse.com已经指定StackOverflow作为其当前(唯一)支持模型。请在投票结束前阅读问题,以避免歧义。我很乐意编辑这个问题以消除歧义,但我相信这是问这个问题的正确地方(鉴于Parse.com删除了他们的论坛)。
我没有看到解析文档中包含我的特定案例,因此我想问两件事:

  • 我这样做对吗
  • 有更好的办法吗?看来一定有
  • 我有一个具有以下数据结构的应用程序:

    用户-->项(PFObject的数组)

    项目-->类别(指向PFObject的指针)

    类别
    名称(类别属性)
    说明(类别的属性)

    我想运行一个查询,返回用户、他们的项目和每个项目的类别的最新信息,返回每个级别的实际信息(包括类别名称和描述,如
    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]对象中提供该信息。有道理?对我来说,这似乎是一个奇怪的遗漏。