核心数据和关系谓词

core data and relationship predicate

我几个月前开始 swift 和核心数据,通常我在这个网站上找到了我的答案,但第一次我真的被 "Relationship" 和 "Predicates"

我创建了第一个视图控制器,其中包含一个由用户填充的表视图,这部分工作如我所愿。 用户可以 "tap" 一个单元格并打开一个带有新表视图的新视图控制器,我想用与用户点击的单元格相关的数据填充这个表视图。

我正在使用 CoreData 并且我设置了 2 个实体:"Compte" 和 "Operation" 它们是一对多的关系(一个对多个操作的竞争)

我在这里 :

在带有 "print" 的控制台中,它的工作方式与我希望的一样,具体取决于单元格是否被点击,打印(sortedOperationArray)是否出现

我现在的问题是如何用这些数据填充我的表视图,当我在我的 FetchResultController 中使用谓词时出现错误或一个空表视图,但在控制台中一切似乎都正常所以我认为关系没问题..

如果我不使用 PREDICATE,我可以用数据填充我的表视图,但我总是看到所有数据

我在 whosebug.com 上看到过其他类似的问题和答案,但目前没有任何效果。

谢谢! :)

我找到了另一种预测数据的方法,它现在对我有用

我在我的 OPERATION 实体中创建了一个名为 "id" 的新属性,当我创建我的数据时,我给一个 ID 赋予了属性,如下所示:

for index in 1 ... 10 {

let newOp = Operation(context: context)
newOp.nom = "Test Compte \(index)"
newOp.date = NSDate()
newOp.moyenPaiement = "Test"
newOp.id = "id123\(compteTestRelation.nom!)"

compteTestRelation.addToRelationCompte(newOp) // RelationShip
}

do {
try context.save()
} catch {
print(error.localizedDescription)
}

然后我在 FetchResultController 中这样预测我的数据:

func setupFetchedResultController () {

    let operationsRequest: NSFetchRequest<Operation> = Operation.fetchRequest()
    let sortDescriptor = NSSortDescriptor(key: "nom", ascending: true)
    let keyPath = "id"
    let searchString = "id123\(compteTestRelation.nom!)"
    let operationsPredicate = NSPredicate(format: "%K CONTAINS %@", keyPath, searchString)

    operationsRequest.returnsObjectsAsFaults = false
    operationsRequest.sortDescriptors = [sortDescriptor]
    operationsRequest.predicate = operationsPredicate


    fetchedResultController = NSFetchedResultsController(fetchRequest: operationsRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)

    do {
        try fetchedResultController.performFetch()

    } catch {
        print(error.localizedDescription)
    }

}