ios - 谓词不适用于 NSSet

标签 ios swift core-data nspredicate

我想过滤categoryId == value但我的谓词失败的地方。 这是我的代码。
categoryList 是 VenueCategory 类的对象数组,categoryId 是 Category 类的属性。

Place

 class Place: NSManagedObject {

     class func GetPlaces(keys:[String],values:[String],forPlaceTab:Bool?,visitType:VisitType) -> [Place] {

    //1
    let managedContext = CoreDataStack.sharedStack().mainContext

    var predicates = [NSPredicate]()
    //2
    let fetchRequest = NSFetchRequest(entityName:TABLE_PLACE)

    for (index, key) in keys.enumerate() {
        let value = values[index]

            let predicateFormat =  key != "categoryId" ? "\(key) == \(value)" : "ANY categoryList.categoryId == \(value)"
            let resultPredicate = NSPredicate(format: predicateFormat)
            predicates.append(resultPredicate)



    }

    if let forPlaceTab = forPlaceTab{

        let predicateFormat = "isPlaceTab == \(forPlaceTab.boolValue)"
        let resultPredicate = NSPredicate(format: predicateFormat)
        predicates.append(resultPredicate)
    }

    fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicates)

    //3
    //var error: NSError?
    do {

        if let results = try managedContext.executeFetchRequest(fetchRequest) as? [Place]{
            return results
        }

    } catch let error as NSError {
        print(error)
    }

    return []
}
}

最佳答案

我遇到了问题。问题是类别未添加到类别列表中。谓词没问题。

关于ios - 谓词不适用于 NSSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39636667/

相关文章:

ios - 这样安全吗? Singleton上可能的保留周期为自成 block

android - Android开发中的Unwind segue相当于什么

ios - 如何以编程方式展开到 2 个不同的 VC

ios - 以编程方式创建与点击按钮关联的标签

iphone - ios coredata 错误找不到源存储的模型

ios - 核心数据简单关系-NSSet

ios - 图像未显示在我的 Swift 中的 UICollectionView 中

ios - 从框架加载 Storyboard

ios - 使用 Segue 的主细节 View

ios - 如何将现有对象保存到 Core Data