CoreData
からフェッチされた結果のデータにアクセスしようとして問題が発生しました。 データはUITableView
に表示されていますが、それはうまく表示されます。属性に基づいてデータをフィルタリングするオプションを実装しようとしています。これはまた、NSCompoundPredicate
を介して正常に動作します。CoreDataからフェッチされたエンティティ属性値にアクセスする
フェッチ要求は正常に処理されますが、フェッチされたエンティティの属性の1つから値を抽出して合計コストを提示する問題があります。
フィルタリングされた結果を取得するためのコード:
func attemptFilteredFetch(filter: Array<NSPredicate>)
{
let filterCriteria: NSCompoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: filter)
let fetchRequest: NSFetchRequest<StoredExpense> = StoredExpense.fetchRequest()
let dateSort = NSSortDescriptor(key: "dateOfExpense", ascending: false)
fetchRequest.sortDescriptors = [dateSort]
fetchRequest.predicate = filterCriteria
let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
controller.delegate = self
self.controller = controller
do
{
try controller.performFetch()
}
catch
{
let error = error as NSError
print("\(error)")
}
expenseList.reloadData()
}
は、これまでのところ、私はしかし、アプリがクラッシュ
attemptFilteredFetch()
関数が呼び出されると、私はオンラインで見つける
hereと同様のものを見つけた方法を、試してみました。
これは間違っているかもしれませんが、フェッチ要求を配列に追加し、それを繰り返して合計値を取得することができます。
良い方法がありますか?あるいは、属性の値にオンザフライでアクセスする方法はありますか?
どのようなエラーが表示されますか?また、モデルを変更しましたか?光の移行をオンにする必要があります。 – CryingHippo
私はそれを理解しました。 NSManagedObject Subclassを手動で生成するとあいまいなエラーが発生するようです。私は手動で作成されたモデルを削除し、問題は解決されました。 – boywithaxe