2014-09-22 4 views
0

Am Переписывание существующего объектного кода c (ios) в swift и теперь сталкиваюсь с некоторыми проблемами с Coredata NSPredicate в быстром режиме, поскольку существует несколько отношений между несколькими и наоборот. Я использую следующий код ,Настройка NSPredicate в Swift CoreData

let fetchRequest = NSFetchRequest(entityName: "TUMessage") 
    let sortSequence = NSSortDescriptor(key: "sequence", ascending: true) 
    let sortTime = NSSortDescriptor(key: "epoch_time", ascending: true) 
    var filterPredicate:NSPredicate = NSPredicate(format:"thread == [c] %@",contact.threads.anyObject()) 
     fetchRequest.predicate = filterPredicate 
    var sortDescriptor:NSArray = NSArray(objects: sortTime,sortSequence) 
    fetchRequest.sortDescriptors = sortDescriptor 
    fetchRequest.fetchBatchSize = 50 
    return fetchRequest 

где "TUMessage" это таблица, мы должны извлекать данные из, "sequence" для сортировки сгружен результат, "thread == [c] %@" взаимосвязь таблицы сообщений (многие к одному, так как каждый контакт имеет несколько нить),

и contact.threads.anyObject() - это предикат, который пытается add.Unfortunately я получаю следующее сообщение об ошибке

type anyobject? does not confirm to protocol, CVarArgType 

Любая помощь будет оценена ..

Спасибо

+0

I не могу проверить его на данный момент, но я предполагаю, что у вас есть разворот опциона: 'contact.threads.anyObject()!' –

+0

Нет, он не работает – sam

+0

Если поток является реляти onship, почему вы выполняете нечувствительный к регистру поиск с использованием [c]? –

ответ

1

Вы должны разворачивать его и приведение к определенному классу

contact.threads.anyObject()! as MYClass 
Смежные вопросы