2015-05-05 3 views
0

Я получаю objc_exception_throw при создании моего NSFetchedResultsController. Я относительно новичок в программировании на iOS, поэтому я все еще получаю зависание отладки iOS.NSFetchedResultsController crashing при создании, objc_exception_throw

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
lazy var parentContext: NSManagedObjectContext? = { 
    if let managedObjectContext = self.appDelegate.managedObjectContext { 
     return managedObjectContext 
    } 
    else { 
     return nil 
    } 
    }() 

lazy var fetchedResultsController: NSFetchedResultsController = { 
    let request = NSFetchRequest() 
    let entity = NSEntityDescription.entityForName("GameDate", inManagedObjectContext: self.parentContext!) 
    request.entity = entity 
    let frc = NSFetchedResultsController(fetchRequest: request, managedObjectContext: self.parentContext!, sectionNameKeyPath: nil, cacheName: nil) 
    frc.delegate = self 
    return frc 
}() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    performFetchFromDb() 
    setupTableView() 
} 

Я получаю аварии на этой линии:

let frc = NSFetchedResultsController(fetchRequest: request, managedObjectContext: self.parentContext!, sectionNameKeyPath: nil, cacheName: nil)

ли это авария что-то делать с моим контексте?

+1

След и ошибка стека, мы не волшебники :) – Schemetrical

+0

@Schemetrical Что ?! Ты не волшебники ?! Почему я здесь даже здесь? Ха-ха, я на самом деле понял это, я не разместил там дескриптор сортировки. Я собираюсь сделать свой собственный ответ, когда смогу. –

ответ

1

Мне недоставало NSSortDescriptor в запросе на выбор. Это зафиксировано:

lazy var fetchedResultsController: NSFetchedResultsController = { 
    let request = NSFetchRequest() 

    let entity = NSEntityDescription.entityForName("GameDate", inManagedObjectContext: self.parentContext!) 
    request.entity = entity 

    let gameTimeSort = NSSortDescriptor(key: "gameTime", ascending: false) 
    request.sortDescriptors = [gameTimeSort] 

    let frc = NSFetchedResultsController(fetchRequest: request, managedObjectContext: self.parentContext!, sectionNameKeyPath: nil, cacheName: nil) 
    frc.delegate = self 
    return frc 
}() 
Смежные вопросы