2017-01-14 1 views
0

CoreData에서 가져온 결과의 데이터에 액세스하는 데 문제가 있습니다. 데이터는 UITableView으로 표시되며 잘 표시됩니다. 속성을 기반으로 데이터를 필터링하는 옵션을 구현하려고합니다. 이것은 또한 NSCompoundPredicate을 통해 잘 작동합니다.CoreData에서 가져온 엔티티 속성 값에 액세스

가져 오기 요청은 정상적으로 처리되지만 가져온 엔티티의 속성 중 하나에서 값을 추출하여 총 비용을 추가하는 데 문제가 있습니다.

필터링 된 결과를 가져 오는에 대한 코드 :

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와 비슷한 사람을 발견하는 방법을 시도했다.

나는이 방법을 잘못 생각하고 있을지 모르지만, 배열에 가져 오기 요청을 추가하고이를 통해 반복하여 전체 값을 얻을 수있을 것으로 기대합니다.

더 좋은 방법이 있습니까? 또는 속성의 값에 즉석에서 액세스 할 수있는 방법이 있습니까?

+1

어떤 종류의 오류가 표시됩니까? 또한 모델을 변경 했습니까? 라이트 마이그레이션을 켜야 할 수도 있습니다. – CryingHippo

+0

나는 그것을 이해했다. NSManagedObject Subclass를 수동으로 생성하면 모호한 오류가 발생합니다. 수동으로 생성 된 모델을 제거했으며 문제가 해결되었습니다. – boywithaxe

답변

0

이 문제는 이전 버전의 Xcode에서 상속 된 모델에 기인합니다. CoreData NSManagedObject 서브 클래스를 사용할 수 있으려면 베타 버전의 AFAIK를 수동으로 만들어야했습니다. Xcode의 최종 버전에서는 이것이 중복 된 것처럼 보였으므로 수동으로 생성 된 모델에서 임의의 오류가 발생했습니다. 코드를 제거하고 코드를 정리하면 내가 가지고 있던 문제가 해결되었습니다.

관련 문제