使用数组谓词的Swift CoreData

时间:2018-10-06 10:43:19

标签: swift core-data nspredicate

我需要在CoreData中保留字符串数组,以后再使用谓词为该数组过滤数据。

根据此文章字段类型Transformable(带有自定义类[String])可以解决问题,我可以正确保存字符串数组: How to save Array to CoreData?

但是,我不能在此字段中使用谓词。具体来说,我的目标是找到所有与保存的数组中的至少一项匹配模式的项。

因此,回到问题所在:在CoreData中是否有一种存储数组的好方法,以便以后可以为其应用谓词?

1 个答案:

答案 0 :(得分:1)

CoreData

找到了合适的解决方案

请勿将数组作为Transformable中的Entity字段

  1. 使用单个字段创建单独的Entity,使用该实体代替array
  2. 在主Entity与阵列替换Entity之间创建关系。
  3. 运行时:使用谓词查找数组CoreObject的{​​{1}}:
  

NSPredicate(格式:“%K =%@”,#keyPath(YourArrayEntity.onlyField),   matchingString)

  1. 使用谓词搜索主要实体
  

NSPredicate(格式:“ ANY%K ==%@”,#keyPath(YourMainEntity.relationToArrayEntity),arrayEntityFoundInPreviousStep)