刚刚Whats new in Swift
在 WWDC 视频中观看,他们对 SDK 和其中的 API 进行了许多更改。所以当听到这NSManagedObject
fetchRequest
件事时,我直接跳进去开始实施它。
因此,根据 WWDC,旧的 NSManagedObject 获取模型完全改变了。这是我很久以前在 Swift 2.2 中写的一个片段。
let answers : Answers = NSEntityDescription.insertNewObjectForEntityForName(EntityNames.Answers.rawValue, inManagedObjectContext: managedContext) as! Answers
现在我尝试在 Swift 3.0 中做同样的事情,我们开始吧。
let answers : NSFetchRequest<Answers> = Answers.fetchRequest // WWDC video style
然后我得到了这个错误
Cannot convert value of type '() -> NSFetchRequest< NSFetchRequestResult >' to specified type 'NSFetchRequest<Answers>'
然后我把代码改成了这个
let answers : NSFetchRequest<Answers> = Answers.fetchRequest()
然后我得到了这个错误
Cannot convert value of type 'NSFetchRequest<Answers>' to specified type 'NSFetchRequest<NSFetchRequestResult>'
所以我稍微更改了代码,错误就消失了。但是现在我Answers
NSManagedObject
没有Answers
NSManagedObject
. 我想fetchRequest
在答案中做。
你怎么看待这件事?请让我知道您的意见。
所以我用这种方式解决了它
extension Answers {
@nonobjc class func fetchRequest() -> NSFetchRequest<Answers> {
return NSFetchRequest<Answers>(entityName: "Level");
}
}
像这样取来
let answers : NSFetchRequest<Answers> = Answers.fetchRequest()
然后我想使它更精确,像这样
let answers = Answers.fetchRequest()
并显示错误Ambiguous use of fetchRequest()
为什么?