Код работал хорошо, когда я использовал Xcode 7.3 с iOS 9, но когда я перешел на Xcode 8 с помощью swift 3, приведенный ниже код показывает мне, что время выполнения ошибка. Тем не менее найти решение для этогоЭкземпляр NSFetchedResultsController требует не-nil fetchRequest и contextObject Context в iOS 10
class TableViewController: UITableViewController,NSFetchedResultsControllerDelegate,UISearchResultsUpdating {
var fetchResultController :NSFetchedResultsController<Restaurant>!
var searchController : UISearchController!
var searchResults :[Restaurant] = []
override func viewDidLoad() {
super.viewDidLoad()
let fetchRequest : NSFetchRequest<NSFetchRequestResult> = Restaurant.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
if let managedObjectContext = (UIApplication.shared.delegate as? AppDelegate)?.managedObjectContext{
fetchResultController = NSFetchedResultsController(fetchRequest: fetchRequest as! NSFetchRequest<Restaurant>, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
fetchResultController.delegate = self
do{
try fetchResultController.performFetch()
restaurants = fetchResultController.fetchedObjects!
}
catch{
print(error)
}
}
}
}
Это маловероятно, что AppDelegate не существует (в противном случае приложение не запустится) и managedObjectContext в шаблоне основных данных, не является необязательным в любом случае, так что опция привязка не требуется, и вы получили ваш не-ноль объекты. – vadian
я удалил это необязательное связывание. Показывая ту же ошибку – Majid