1

刚刚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()为什么?

4

0 回答 0