好的,所以我一直在尝试一些但却无法让它发挥作用。 基本上我有这个使用Parse作为后端的简单应用程序。我用一些图像和名称填充表视图,然后该表视图将您带到包含更多图像和一些文本的详细视图。
我实现了一种简单的方法将其中一个对象添加到“书签/收藏夹”表视图,因为我希望这个应用程序很简单,我个人讨厌需要登录的应用程序,我不想使用Parse关系或用户。所以应用程序所做的只是将特定对象的“objectId”添加到收藏夹中,然后将其保存到NSUserDefaults中的数组中,它运行查询并检索具有与NSUserDefaults中的对象ID匹配的对象ID的对象阵列。
我在尝试从tableview中删除它们时遇到了问题。由于我在tableview中删除了index处的对象,问题是用户以特定的顺序添加了一个对象Id,并且这些对象带有不同的对象,因为它们是按升序查询的。所以让我们说用户添加对象1,2& 3到默认数组(按此顺序)但查询带回3,1& 2.如果我删除了索引3处的对象,我希望它是对象3,它会删除对象2。
要解决此问题,我能想到的唯一方法是按照用户向其收藏夹添加ID的顺序排序查询。我查了一下,发现我可以使用NSComparator检查一个是否与另一个相同,我发现的信息有点令人困惑,我不知道如何使用比较器,所以如果有人能指出我正确的方向那会很棒。
提前致谢并感谢您的阅读!
TLTR?问题:任何人都可以提供有关如何使用NSComparator的示例吗?
答案 0 :(得分:1)
我想我理解这个问题。在用户默认值中有一个这样的数组:
stringArray = [ @"objectId-A", @"objectId-B", @"objectId-C", @"objectId-D" ]
你以某种方式获取解析对象,它们以任意顺序返回,如下所示:
objectArray = [ <object-B>, <object-A>, <object-D>, <object-C> ]
哪个成为表的数据源。然后用户请求删除indexPath
处的对象。
您可以轻松删除对象,因为您可以从indexPath.row
删除索引为objectArray
的对象。但是如何从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)!)