parsing通过指针sorting查询
我需要使用Parse进行简单的查询sorting。
我有两个class: Captain
和Boat
。
每个Captain
都有一个Boat
指针对象。
我列出了所有Captain
对象的属性,如名字,船名等
我需要能够通过船名来sortingCaptain
对象的查询。 我怎么能够?
我可以使用NSSortDescriptor
sorting键(例如Captain
name
对直接属性进行sorting。 但是我需要用他们Boat
的name
来排列Captain
对象。
请帮忙!
如果您可以在sorting限定符上使用点符号,那将是很好的,例如:
[captainQuery orderByAscending:@"boat.name"];
不幸的是,属性点符号仅适用于includeKey :. 所以要做到这一点,包括相关的对象,然后使用相关对象的属性进行本地sorting:
// ... [captainQuery includeKey:@"boat"]; [query findObjectsInBackgroundWithBlock:^(NSArray *captains, NSError *error) { NSArray *sortedCaptains = [captains sortedArrayUsingComparator: ^(PFObject *capA, PFObject *capB) { return [capA[@"boat"][@"name"] compare:capB[@"boat"][@"name"]]; // or reverse param order for descending }]; }];
编辑 – @Logan有帮助地指出,如果您的查询通过成千上万的船长,这个答案不能很好地扩展。 如果队长数量巨大,最好是包括船长指针,然后执行以下操作:
更迂回地说,你可以取船,按照名字命名,包括船长(如果你的船有指向船长),然后映射返回(sorting)的船只为他们的船长。
您可以将关系查询用于多个查询,查询代码应如下所示:
PFObject *captain = [PFObject objectWithClassName:@"Captain"]; PFRelation *relation = [captain relationForKey:@"Boat"]; PFQuery *relQuery = [relation query]; [relQuery orderByDescending:@"name"]; // Add other query constraints [relQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (error) { // There was an error } else { // All the captains sorted by related boat's names } }];
下面有一些有用的链接:
http://blog.parse.com/2012/05/17/new-many-to-many/ https://parse.com/docs/ios_guide#objects-pointers/iOS
这里有一个可扩展的解决scheme,开销很小:目前你有一张船和一张船长表,每个船长都有一个指向船的指针。
你应该添加第三个表 – 让我们称之为“船长”,其中包含船长对象中包含的所有船只。 在添加新队长时,通过添加船来维护队长,并在删除队长时将其从队伍中移除。
为了通过船只对船长进行分类:
- 查询'船长船',按任何sorting。 请注意,即使这张表包含一百万条logging,您也会得到与您相关的第一个X.
-
查询“Captains”,从步骤1:
[captainQuery whereKey:"boat" containedIn:boatList]
使用'containedIn'方法。 -
现在你只有你需要的队长对象(可能是百万)。 根据任何地方在本地sorting。
- 当应用程序进入后台时,NSCache清空
- ld:警告:section __DATA / __ objc_imageinfo__DATA意外的大尺寸
- 使用ReactorKit,Quick&Nimble,RxBlocking,Swift 4.1在iOS中进行单元测试
- iOS:如何定义公共方法?
- Xamarinforms:ios的启动器图标
- iOS应用程序可以在不打开页面的情况下切换到Safari?
- 在dispatch_async中调用NSURLConnection并在iPhone开发中读取mainRunLoop中的didReceiveResponse
- ios-pdf在uiscrollview中生成
- DSYM和二进制需要符号? 还是只是DSYM?