我有一个数据库,其中包含一个列表(例如房地产)和一个用户表。用户可以收藏列表。我必须在页面上显示所有列表,并在列表中显示它们是否被当前用户收藏。一般来说,最好的方法是什么。
我意识到这是一个普遍的问题。这适用于iOS开发。我现在正在提取所有列表,我只是添加了收藏列表的功能。在iOS端,我正在创建一个本地Listing对象的数组,并在tableView中显示它们。现在我希望能够标记这些列表是否被收藏,具体取决于它们是否被标记为通过用户的关系。
任何人都有一个简单的基本解释,说明如何做这样的事情?
现在,我已经有了我正在展示的一系列商品。 现在我在想,在我已经查询列表的地方,我还应该查询关系并获得一些用户喜欢的帖子。
现在,当我调用cellForRowAtIndexPath
时(对于每个单元格),我可以遍历受欢迎的列表数组,并查看该帖子是否在那里(产生N ^ 2算法)。
任何人都有更好的方法来处理这样的事情?
答案 0 :(得分:0)
您可以使用您喜欢的列表数组并从中制作字典。检查列表是否被喜欢将是O(1)。
var likedListings = [PFObject]()
var hash = [String: Bool]()
for listing in likedListings {
hash[listing.objectId!] = true
}
var aListing = PFObject() // say that it is the listing in cellForRowAtIndexPath
if let val = hash[aListing.objectId!] {
if val == true {
// aListing is liked
}
}
您可以在Parse的示例应用Anypic中看到类似功能的一个很好的示例。他们使用NSCache
为每张照片保留一些属性(像,评论者,likesByCurrentUser等)。这个想法和上面一样。