2015-05-05 38 views
0

我在创建我的NSFetchedResultsController时收到objc_exception_throw。我对iOS编程相对比较陌生,所以我仍然在调试iOS崩溃。NSFetchedResultsController在创建时崩溃,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 
}()