5

我在 parse.com 有一个数据库

我有一堂课叫UserDetail

在那个类中,我有一个名为的数组字段occupationid

对于这个专栏,我有另一个名为Occupationwhere columns are like 的类 occupationidoccupationname

现在我想根据存储的UserDetail数据从类中获取所有数据以及所有数据occupationoccupationidUserDetail


UserDetail

用户名 - 职业标识 - 详细信息

Jhon - ["1","3","4"] - ajfdkaldjlajsdkfjaldkf


Occupation

职业ID - 职业

1 - 会计师

2 - 律师

3 - 画家

4 - 作家

同样地。

我已经浏览了文档并且PFRelation我阅读了但没有得到如何在我的情况下应用它来获取这种数据。

我也试过

    PFQuery *getuserdetail = [PFQuery queryWithClassName:@"UserDetail"];

    [getuserdetail orderByAscending:@"celebid"];

    PFQuery *getoccupation = [PFQuery queryWithClassName:@"Occupation"];
    [getoccupation whereKey:@"occupationid" matchesKey:@"occupationid" inQuery:getuserdetail];

有什么建议么?我必须对其他 2,3 列执行相同的操作。任何帮助将不胜感激。

更新

数据直接添加到 parse.com DataBrowser,而不是从代码中添加。

Relation我在类中创建了一列,UserDetail要求我添加occupationidoccupation

当我补充说我面临两个问题

1> 当我尝试为不同的用户添加相同的职业ID 时,它会为相同的用户创建两行occupationid。这意味着对于具有相同职业的两个用户,它正在创建两行,occupationtable 例如。objectid - 职业 ID - 职业 adfk12 - 1 - 学校老师 jdlkfg56 - 1 - 学校老师

2> 当我试图从代码中获取时,它给了我错误

PFQuery *getuserdetail = [PFQuery queryWithClassName:@"UserDetail"];        
[getuserdetail orderByAscending:@"celebid"];
[getuserdetail includeKey:@"occupation"];
[getuserdetail whereKey:@"userid" equalTo:[NSString stringWithFormat:@"%d",intuserID]];

职业ID =“(<00000000>。(空)->职业)”;

其中Occupation类名 occupation是列名。如果出现歧义occupation,我尝试编辑列名。occupationname但这也行不通。

4

1 回答 1

5

我认为你有点不明白,因为你在考虑 Parse 是一个“普通”的类似 SQL 的数据库。我这样说是因为从您所写的内容来看,您的occupationid字段似乎是多余的(因为 Parse 会自动为所有对象分配一个唯一 ID)。您可以使用PFRelation将职业与用户相关联,如下所示:

[someUser setObject:someOccupation forKey:@"occupation"]

someUser这将在键下设置一个指针occupation

但是,您可能已经发现(也许您不确定如何PFRelation正确应用的原因)是默认情况下Parse 在查询时不会获取相关对象。您需要明确告诉 Parse 这样做。

为此,您使用该includeKey:方法。因此,要同时查询用户获取他们的职业(假设您已将职业设置为 a PFRelation),您可以这样做:

PFQuery *query = [PFQuery queryWithClassName:@"UserDetail"];
[query includeKey:@"occupation"];
[query findObjectsInBackground... etc 

我最好的建议是尽量不要将 Parse 视为 MySQL 或类似的东西,因为它的工作方式完全不同。我发现 Parse 的文档非常有用且清晰,所以也许也值得一看。

于 2013-06-21T13:45:10.463 回答