2016-06-22 3 views
1

У меня есть некоторые проблемы, о executeFetchRequestSwift: 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: Рекомендуется указывать объекты Core Data в единственном числе, чтобы избежать путаницы.

+0

Это работает. Большое спасибо за –

Смежные вопросы