【发布时间】:2018-05-02 12:09:55
【问题描述】:
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' 所以显然它在我的班级ChatLogController 中找不到friend 出于某种原因,还是我错了?这就是我的猜测,因为它找不到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})
}
}
有谁知道我为什么会收到这个错误以及如何解决它?
编辑:我注意到,如果我从第一个代码 sn-p 的第一行中删除 () -> NSFetchedResultsController<NSFetchRequestResult> in,错误就会消失,但是我会收到此错误:Unable to infer complex closure return type; add explicit type to disambiguate
【问题讨论】:
-
您需要在声明它们的上下文中显示这两个代码的 sn-ps。例如,在第一个sn-p中,编译器不认为
self是ChatLogController,它认为它是某个描述的闭包。 -
@JeremyP 你想看代码的哪一部分?我该怎么做才能让
self指向班级?我分享的两个代码sn-ps都在ChatLogController内。
标签: ios swift xcode compiler-errors nsfetchedresultscontroller