簡體   English   中英

Swift:executeFetchRequest:無法轉換'Any Object'類型的值

[英]Swift: executeFetchRequest : Cannot convert value of type 'Any Object'

我有一些關於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實體以避免混淆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM