ios - Swift:executeFetchRequest:无法转换类型为 'Any Object' 的值

标签 ios iphone swift

我对 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/

相关文章:

ios - 在 iOS RxSwift 中用适当的值区分 errorObserver

ios - 我们如何识别我的 iPhone 屏幕上绘制的字符?

iPhone 重置桌面 View

ios - 阅读非好友的动态消息

iphone - 提交到 AppStore 后重命名 iOS App

swift - 协议(protocol)关联类型类型别名分配编译错误

ios - 如何根据其底部的webview设置Viewcontroller动态高度?

ios - 返回启动应用程序的浏览器页面而不刷新

macos - 根据变量 swift 调整窗口大小

ios - 从 iOS 导出椭圆曲线 key 以使用 OpenSSL