Только что посмотрел 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()
Почему??
Animal
пересекает методfetchRequest()
изNSManagedObject
с другим типом возвращаемого значения. Вы можете отправить отчет об ошибке и посмотреть, улучшит ли его Apple. - person Martin R   schedule 17.06.2016