【问题标题】:NSFetchRequest with no duplications by parameterNSFetchRequest 参数不重复
【发布时间】:2016-03-17 10:25:11
【问题描述】:

我有一个简单的BWWishlistBook 实体,它有一个属性BWBook。一个BWBook 可能属于许多 BWWishlistBooks,而一个BWWishlistBook 总是只有一个BWBook

现在我有一个NSFetchRequest 用于BWWishlistBook

let fetchReguest = NSFetchRequest(entityName: "BWWishlistBook")

我需要避免获取包含同一本书的愿望清单书籍。是否可以?那么如何设置谓词呢? BWBook 具有唯一的 id 属性。

在 MySQL 中,这是 DISTINCT。 CoreData 中有什么?

【问题讨论】:

    标签: ios swift core-data


    【解决方案1】:

    -returnsDistinctResults

    /* Returns/sets if the fetch request returns only distinct values for the fields specified by propertiesToFetch. 
       This value is only used for NSDictionaryResultType. 
       Defaults to NO. */
    
    @available(iOS 3.0, *)
    public var returnsDistinctResults: Bool
    

    【讨论】:

      【解决方案2】:

      使用谓词wishlist.count != 0 获取BWBook

      现在您将拥有一个书籍列表(所有不同的),并且所有书籍都至少有一个与之关联的愿望清单。

      现在您可以只显示每本书的第一个愿望清单,您将获得一个包含不同图书的愿望清单列表。

      【讨论】:

        【解决方案3】:

        如果您知道要为哪个BWBook 获取BWWishlistBook,最简单(也是最高效的方式)是通过BWBook 上的关系获取它。

        大概是这样的

        wishlist = bwBook.bwWishlistBooks 
        

        【讨论】:

          猜你喜欢
          • 2017-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-26
          相关资源
          最近更新 更多