the*_*ncs 4 core-data nspredicate swift
我有一个 Core Data 实体,它有一个名为likedMoviesString array 的属性[String]。这被配置为可转换属性。
我在此属性内填充 ID 列表,例如:
用户实体:
name = Duncan | likedMovies = [524, 558, 721]
name = Saskia | likedMovies = [143, 558, 653]
name = Marek | likedMovies = [655, 323, 112]
我想编写一个谓词,它返回数组包含给定值的所有User实体。likedMovies我已经尝试了下面的谓词,但它不起作用 - 对于 id 558,[Duncan, Saskia]我没有返回任何实体,而不是返回。
fetchRequest.predicate = NSPredicate(format: "%@ IN %@", "558", "likedMovies")
预先感谢您的帮助。
有两个问题:第一,你的谓词格式错误。您不能使用 %@ 作为属性名称的占位符;您必须改为使用 %K:
fetchRequest.predicate = NSPredicate(format: "%@ IN %K", "558", "likedMovies")
Run Code Online (Sandbox Code Playgroud)
但第二个问题是可转换属性不能在谓词中用作获取请求的一部分(对于 SQLite 存储)。一种选择是使用谓词来过滤内存中的 User 对象(在获取它们之后)。另一种选择是将 ID 数组表示为字符串(带有合适的分隔符),而不是字符串数组。然后,您可以使用CONTAINS字符串运算符来创建谓词。但是向 中添加和删除 IDlikedMovies将成为一个相当笨重的字符串操作过程。另一种选择是用一对多关系替换可转换属性。我推荐最后一个。
| 归档时间: |
|
| 查看次数: |
1283 次 |
| 最近记录: |