let fetchedResultsController: NSFetchedResultsController = { () -> NSFetchedResultsController<NSFetchRequestResult> in
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Message")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "date", ascending: true)]
fetchRequest.predicate = NSPredicate(format: "friend.name = %@", self.friend!.name!)
let delegate = UIApplication.shared.delegate as! AppDelegate
let context = delegate.persistentContainer.viewContext
let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
return frc
}()
В строке, которая говорит: fetchRequest.predicate = NSPredicate(format: "friend.name = %@", self.friend!.name!)
Я получаю сообщение об ошибке: Value of type '(ChatLogController) -> () -> (ChatLogController)' has no member 'friend'
Так, очевидно, он не может найти friend
в моем классе ChatLogController
по какой-то причине, или я ошибаюсь? Это то, что я предполагаю, так как friend
не будет входить в self
.
Вот переменная friend
, она внутри класса ChatLogController
:
var friend: Friend?
{
didSet
{
navigationItem.title = friend?.name
messages = friend?.messages?.allObjects as? [Message]
messages = messages?.sorted(by: {$0.date!.compare($1.date! as Date) == .orderedAscending})
}
}
Кто-нибудь знает, почему я получаю эту ошибку и как ее решить?
Редактировать: Я заметил, что если я удаляю () -> NSFetchedResultsController<NSFetchRequestResult> in
из первой строки первого фрагмента кода, ошибка исчезает, однако вместо этого я получаю эту ошибку: Unable to infer complex closure return type; add explicit type to disambiguate