Я пытаюсь иметь 2 отдельных UITableViews внутри 1 UIViewController, но трюк в том, что я пытаюсь сделать это, чтобы оба они загрузились из CoreDate.2 UITableViews внутри 1 UIViewController как загрузка из CoreData
Я пытался добиться этого, используя тот же стиль, что и с UITableViewController, но, похоже, я сталкиваюсь с проблемами.
То, как я получаю данные для таблиц, использует FRC (NSFetchedResultsController), но, похоже, я только вслух имею 1 из них для UIViewController.
Вот мои 2 брата FRC, которые я использую.
FRC 1:
func getFRCIngredients() -> NSFetchedResultsController<Ent_Ingredients> {
let fetchReq: NSFetchRequest<Ent_Ingredients> = Ent_Ingredients.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "order", ascending: true)
let predicate = NSPredicate(format: "recipeRel == %@", self.recipe!)
fetchReq.sortDescriptors = [sortDescriptor]
fetchReq.predicate = predicate
let frc = NSFetchedResultsController(fetchRequest: fetchReq, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: nil)
return frc
}
FRC 2:
func getFRCDirections() -> NSFetchedResultsController<Ent_Directions> {
let fetchReq: NSFetchRequest<Ent_Directions> = Ent_Directions.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "order", ascending: true)
let predicate = NSPredicate(format: "recipeRel == %@", self.recipe!)
fetchReq.sortDescriptors = [sortDescriptor]
fetchReq.predicate = predicate
let frc = NSFetchedResultsController(fetchRequest: fetchReq, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: nil)
return frc
}
Я получаю ошибку внутри viewDidLoad()
после того как я пытаюсь установить делегат 2-го FRC быть самостоятельной. Что имеет смысл, когда я думаю об этом, вы, вероятно, не можете управлять им двумя отдельными наборами данных. Ошибка: «libc++abi.dylib: terminating with uncaught exception of type NSException
»
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
tableViewIngredients.dataSource = self
tableViewIngredients.delegate = self
tableViewIngredients.register(UITableViewCell.self, forCellReuseIdentifier: "recipeIngredientCell")
tableViewDirections.dataSource = self
tableViewDirections.delegate = self
tableViewDirections.register(UITableViewCell.self, forCellReuseIdentifier: "recipeDirectionCell")
recipeName.text = recipe!.name
recipeImage.image = UIImage(data: recipe!.image as! Data)
oldName = recipe!.name!
frcIngredients = getFRCIngredients()
frcIngredients!.delegate = self
do {
try frcIngredients!.performFetch()
} catch {
fatalError("Failed to perform initial FRC fetch for Ingredients")
}
frcDirections = getFRCDirections()
frcDirections!.delegate = self //<- ***ERRORS HERE***
do {
try frcDirections!.performFetch()
} catch {
fatalError("Failed to perform initial FRC fetch for Ingredients")
}
NotificationCenter.default.addObserver(self, selector: #selector(AddRecipesVC.keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
}
Как я могу сделать то, что я пытаюсь сделать здесь? Я все еще относительно новичок в Xcode и Swift, поэтому любая помощь будет очень оценена.
Спасибо!