2016-05-19 3 views
0

У меня есть 2 сущности в моей модели данных, как изображение ниже:Основные данные выборки с ObjectId

Product

Attendance

Я спасительной продукты с участием отношения хорошо! Теперь, мне нужно принести продукты с определенной Attendance.objectID

Я пытаюсь следующий код:

func fetchProducts() { 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let fetchRequest = NSFetchRequest(entityName: "Product") 
    let attendancePredicate = NSPredicate(format: "attendance.objectID == \(currAttendance.objectID)") 
    fetchRequest.predicate = attendancePredicate 

    print("Att = \(currAttendance.name!)") 
    viewTypeSKU.hidden = true 

    do { 
     let results = try managedContext.executeFetchRequest(fetchRequest) 
     products = results as! [NSManagedObject] 
    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 

} 

Я получаю сообщение об ошибке: 'Unable to parse the format string "attendance.objectID ==

+0

Что такое currAttendance? Куда вы это взяли? – boidkan

+0

Попробуйте выполнить 'NSPredicate (format:" attendance.objectID =% @ ", currAttendance.objectID)' – boidkan

+1

Вы также можете настроить инверсию, чтобы вы могли просто сделать 'currAttendance.product' и сделать с ней. – boidkan

ответ

1

Внутри выборки SELF сравнима до NSManagedObjectID и до NSManagedObject. Однако вы не можете сделать .objectID на предмет, который был выбран. Моя теория заключается в том, что при выполнении . он ищет атрибуты и/или отношения для конкретного объекта, где .objectID является частью NSManagedObject. Я мог ошибаться.

Однако, если вы только что переключили свой NSPredicate на один из них, он будет работать.

NSPredicate(format: "attendance = %@", currAttendance.objectID)

или

NSPredicate(format: "attendance = %@", currAttendance)

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