【发布时间】:2015-08-11 14:42:29
【问题描述】:
我在从 Core Data 获取数据时遇到问题。如果我的术语不具体或不准确,我很抱歉,但我是 Core Data 的新手。
我使用的是 Xcode 7 beta 和 Swift 2。设备操作系统设置为 8.4。
行:
let result = try managedContext.executeFetchRequest(dogFetch) as [Dog]?
给我这个错误:"'[AnyObject]' is not convertible to '[Dog]?'".
完整代码在这里:
do {
let dogEntity = NSEntityDescription.entityForName("Dog", inManagedObjectContext: managedContext)
let dog = Dog(entity: dogEntity!, insertIntoManagedObjectContext: managedContext)
let dogName = "Fido"
let dogFetch = NSFetchRequest(entityName: "Dog")
dogFetch.predicate = NSPredicate(format: "name == %@", dog)
let result = try managedContext.executeFetchRequest(dogFetch) as [Dog]?
if let dogs = result {
if dogs.count == 0 {
currentDog = Dog(entity: dogEntity!, insertIntoManagedObjectContext: managedContext)
currentDog.name = dogName
} else {
currentDog = dogs[0]
}
}
} catch let fetchError as NSError {
print("Could not fetch \(fetchError)")
}
}
我附上了一张图片来展示我的核心数据模型的样子:
Core Data 类是“标准的”,从 Editor > Create NSManagedObjectSubclass 自动创建:
狗+CoreDataProperties.swift:
import Foundation
import CoreData
extension Dog {
@NSManaged var name: String?
@NSManaged var walks: NSOrderedSet?
}
狗.swift:
import Foundation
import CoreData
@objc(Dog)
class Dog: NSManagedObject {
// Insert code here to add functionality to your managed object subclass
}
Walk+CoreDataProperties.swift 和 Walk.swift 基本相同。
--
编辑:所选答案解决了问题。我的想法是,要么这是 Swift 2.x 与 Swift 1.x 的变化,要么是我得到代码的教程有误。
【问题讨论】: