私はtableViewを持っており、そのテーブルビューにはCoredataのデータが取り込まれています。このようにデータは分解されます。CoreData iosのエンティティ内に属性を追加する10
エンティティ - 人
エンティティ - ステートメント の文エンティティはamountOwedという属性を持っており、それが小数型です。
人は多くのステートメントを持つことができますが、各ステートメントは1人の個人に属しています。
ここでは、追加したいデータのパスを示します。人>声明> AmountOwed。
tableView関数には、Personエンティティを表すletがあります。私はamountOwedは、SQL文エンティティ内の各個人の属性をすべて足している行うことができるようにしたいどのよう
print(person.name) // Bob
のような名前の人物をプリントアウトすることができますので
let person = fetchedResultsController.object(at: indexPath)
私はその作業を知っていますそれらをセルに表示します。
私は計算されたフェッチの例に従おうとしていますが、私は静かではないようですが、各PersonエンティティにリンクされているStatementsエンティティをターゲットにする方法を理解しています。
let fetchRequest = NSFetchRequest<NSDictionary>(entityName:"statement")
fetchRequest.resultType = .dictionaryResultType
let sumExpressionDesc = NSExpressionDescription()
sumExpressionDesc.name = "sumDeals"
let specialCountExp = NSExpression(forKeyPath: #keyPath(Person.statement[indexPath].amountOwed))
sumExpressionDesc.expression = NSExpression(forFunction: "sum:", arguments: [specialCountExp])
sumExpressionDesc.expressionResultsType = .interger32AttributeType
fetchRequest.propertiesToFetch = [sumExpressionDesc]
do{
let results = try coreDataStack.managedContext.fetch(fetchRequest)
let resultDict = results.first!
let numDeals = resultDict["sumDeals"]
print(numDeals!)
}
catch let error as NSError{
print("Count not fetched \(error), \(error.userInfo)")
}
Statementエンティティを取得する必要がありますか、またはFetchedREsultsControllerを使用するだけですか?私は私のfetchedResultsControllerを使用する場合ステートメントエンティティへのキーパスはあなたPeople+CoreDataClass
アドオンでOKこの
person[indexPath].statement.amountOwed
うわー、どのような素晴らしいソリューション、とてもシンプルで清潔。ありがとうございました! – icekomo