2016-06-22 27 views
1

我有executeFetchRequest一些问题斯威夫特: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信号灯类是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) 

无法将类型[ '任何对象']的值为指定类型的 '灯塔'

帮我请 谢谢:))

回答

3

两个问题:

  • executeFetchRequest回报总是对象的数组
  • 您必须施放该类型。

let existingBeacons = try context.executeFetchRequest(request) as! [Beacons] 

无法转换值类型的...指定类型...通常意味着编译器通过强制转换类型需要帮助,或者是没有关系的。

PS:建议以单数形式命名核心数据实体以避免混淆。

+0

它的工作。非常感谢你 –

相关问题