如何使用 NSComparator 来组织一个 Parse Query? Swift

How to use NSComparator to organize a Parse Query? Swift

好的,所以我一直在尝试一些东西,但还不能让它工作。 基本上我有这个简单的应用程序,它使用 Parse 作为 back-end。我用一些图像和名称填充 table 视图,然后该 table 视图将您带到包含更多图像和一些文本的详细视图。

我实现了一种将其中一个 object 添加到 "Bookmarks / Favorites" table 视图的简单方法,因为我希望这个应用程序简单,而且我个人讨厌需要登录时,我不想使用 Parse 关系或用户。因此,该应用程序所做的只是将特定 object 的 "objectId" 添加到收藏夹,然后将其保存到 NSUserDefaults 中的数组,运行查询并检索 objects使用与 NSUserDefaults 数组中的 ID 相匹配的 object ID。

我在尝试从 table 视图中删除它们时遇到了问题。由于我删除了 table 视图中索引处的 object,问题是用户以特定顺序添加了一个 object ID,而 object 带有不同的一个,因为按升序查询。因此,假设用户将 object 1,2 & 3 添加到默认数组(按该顺序),但查询返回 3,1 & 2。如果我删除索引 3 处的 object,我会期望是 object 3,它删除 object 2.

要解决这个问题,我能想到的唯一方法是按照用户将 id 添加到他们的收藏夹的相同顺序对查询进行排序。我查了一下,发现我可以使用 NSComparator 来检查一个是否与另一个相同,我发现的信息有点令人困惑,我不确定如何使用比较器,所以如果有人能指出我正确的方向那太棒了。

提前致谢,感谢阅读!

TLTR?问题:任何人都可以提供有关如何使用 NSComparator 的示例吗?

我想我理解了这个问题。您在用户默认值中有一个这样的数组:

stringArray = [ @"objectId-A", @"objectId-B", @"objectId-C", @"objectId-D" ]

然后你以某种方式获取解析对象,然后以任意顺序返回它们,如下所示:

objectArray = [ <object-B>, <object-A>, <object-D>, <object-C> ]

成为 table 的数据源。然后用户请求删除 indexPath.

处的对象

您可以轻松删除对象,因为您可以从 objectArray 中删除索引 indexPath.row 处的对象。但是如何从 id 数组中删除正确的对象呢?您可以使用对象的 ID 并查找它...

deleteMe = objectArray[indexPath.row]  // look up the object
deleteMeId = deleteMe.objectId!        // get its id

// remove the object from objectArray        
objectArray.removeAtIndex(objectArray.indexOf(deleteMe)!)

// remove the id from the id array
stringArray.removeAtIndex(stringArray.indexOf(deleteMeId)!)