关系属性计数的keyPath

时间:2017-01-04 15:36:05

标签: swift core-data nspredicate nsfetchedresultscontroller

我试图为获取的结果控制器创建NSPredicate,控制器应该只观察具有关系的对象(其中它不是nil)以及关系的计数更大的对象比0.

我已经看过如何使用字符串作为谓词的参数:

[NSPredicate predicateWithFormat:@"excludedOccurrences.@count == 0"];

来自:https://stackoverflow.com/a/1195519/4096655

但我试图摆脱文字字符串,所以我想使用关键路径。

示例:

import UIKit
import CoreData

class Animal: NSManagedObject {

    @NSManaged var name: String
    @NSManaged var friends: NSSet?
}

let keyPath = #keyPath(Animal.friends.count)

导致错误: 对会员'计数'

的模棱两可的提及

1 个答案:

答案 0 :(得分:6)

@count不了解@count运算符。但是你可以 将它用于“Animal.friends”关键路径并附加NSPredicate(format: "%K.@count = 0", #keyPath(Animal.friends)) 在谓词格式字符串中:

yyyy-mm-dd HH:MM:SS.ms