我在parse.com上有一个数据库
我有一个名为UserDetail
的课程
在该课程中,我有一个名为occupationid
的数组字段
对于这个专栏,我有另一个名为Occupation
的类,其中的列就像
occupationid
,occupationname
现在,我想根据UserDetail
occupation
从occupationid
获取所有数据以及UserDetail
类中的所有数据
UserDetail
用户名--contidid - 明细
Jhon - [“1”,“3”,“4”] - ajfdkaldjlajsdkfjaldkf
Occupation
占领 - 占领
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
的列
这要求我添加occupationid
和occupation
当我补充说我面临两个问题时
1>当我尝试为不同的用户添加相同的占领时,它会为同一个occupationid
创建两行。这意味着对于具有相同职业的两个用户,它在occupationtable
中创建两行
例如。
objectid - 占领 - 占领
adfk12 - 1 - 学校老师
jdlkfg56 - 1 - 学校老师
2 - ;当我尝试从代码中获取时,它给了我错误
PFQuery *getuserdetail = [PFQuery queryWithClassName:@"UserDetail"];
[getuserdetail orderByAscending:@"celebid"];
[getuserdetail includeKey:@"occupation"];
[getuserdetail whereKey:@"userid" equalTo:[NSString stringWithFormat:@"%d",intuserID]];
occupationid =“(< 00000000>。(null) - >职业)”;
其中Occupation
是类名
occupation
是列名。
我尝试使用occupation
编辑列名称occupationname
,如果它变得含糊不清。但那也行不通。
答案 0 :(得分:4)
我认为你有点不安,因为你正在考虑Parse的“普通”类似SQL的数据库。我之所以这么说,是因为根据您所写的内容,您的occupationid
字段看起来是多余的(因为Parse会自动为所有对象分配唯一的ID)。您可以使用PFRelation
将职业与用户相关联,如下所示:
[someUser setObject:someOccupation forKey:@"occupation"]
这将在someUser
键下的occupation
处设置指针。
但是,正如您可能已经发现的那样(可能为什么您不确定如何正确应用PFRelation
)默认情况下 Parse在查询时不会获取相关对象。你需要明确告诉Parse这样做。
要执行此操作,请使用includeKey:
方法。因此,要查询用户和同时获得他们的职业(假设您将职业设置为PFRelation
),您可以这样做:
PFQuery *query = [PFQuery queryWithClassName:@"UserDetail"];
[query includeKey:@"occupation"];
[query findObjectsInBackground... etc
我最好的建议是尽量不要将Parse视为MySQL或类似的,因为它的工作方式却截然不同。我发现Parse的文档非常实用且清晰,所以也许值得一看。