我对 executeFetchRequest 有一些疑问
import UIKit
import CoreData
class BeaconDB: NSObject {
var addStatus: BeaconAddStatus!
enum BeaconAddStatus{
case DUPLICATE_IN_AD
case ADDED_SUCCESSFULL
case ERROR_IN_ADD
}
func addNewBeacon(beacon: BeaconData) -> BeaconAddStatus{
print("ADDNewBeacon")
print("uuid: %@ \(beacon.uuid)")
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.managedObjectContext
let entityDesc: NSEntityDescription = NSEntityDescription.entityForName("Beacon", inManagedObjectContext: context)!
let request: NSFetchRequest = NSFetchRequest()
let predSearch: NSPredicate = NSPredicate(format: "(uuid = %@) AND (major = %@) AND (minor = %@) \(beacon.uuid), \(beacon.major), \(beacon.minor)")
request.entity = entityDesc
request.predicate = predSearch
do {
let existingBeacon: Beacons = try context.executeFetchRequest(request)
// success ...
} catch let error as NSError {
// failure
print("Fetch failed: \(error.localizedDescription)")
}
}
}
Mv Beacons 类是 NSManagedObject
import UIKit
import CoreData
class Beacons: NSManagedObject {
dynamic var major : NSNumber = 0.0
dynamic var minor : NSNumber = 0.0
dynamic var name : NSString = ""
dynamic var uuid : NSString = ""
}
但是这条线是错误的
let existingBeacon: Beacons = try context.executeFetchRequest(request)
无法将类型 ['Any Object'] 的值转换为指定类型 'Beacons'
请帮帮我 谢谢:))
最佳答案
两个问题:
executeFetchRequest
总是返回对象的数组。- 你必须转换类型。
let existingBeacons = try context.executeFetchRequest(request) as! [Beacons]
无法将类型...的值转换为指定的类型... 意味着编译器通常需要通过转换类型来获得帮助,或者根本没有任何关系。
PS:建议以单数形式命名 Core Data 实体,以免混淆。
关于ios - Swift:executeFetchRequest:无法转换类型为 'Any Object' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37962944/