2009-09-13 3 views
0

Я использую следующий код, чтобы захватить несколько объектов из SQLite магазина (который является подготовленный файл БД SQLite, сгенерированные с Core Data на рабочий стол):iPhone в врезается на Запрос на получение

 NSFetchRequest * request = [[NSFetchRequest alloc] init]; 
     [request setEntity: wordEntityDescription]; 
     [request setPredicate: [NSPredicate predicateWithFormat: @"word = %@", searchText]]; 

     NSError * error = [[NSError alloc] init]; 
     NSArray * results = [[dao managedObjectContext] executeFetchRequest: request error: &error]; 

Eveyrthing похоже, правильно настроен, но executeFetchRequest: ошибка: не удается глубоко внутри Core Data (на NSSQLCore _newRowsForFetchPlan: selectedBy: withArgument), производя 256 ошибок во внешнем коде.

Единственный кинк, с которым я настроил managedObjectContext, должен был указать параметр NSIgnorePersistentStoreVersioningOption для addPersistentStoreWithType, поскольку он постоянно производил ошибку 134100 (и да, я уверен, что мои модели просто идентичны: я повторно использовал модель из проект, который создал файл SQL).

Любые идеи?

P.S. Не обращайте внимания на стиль кода, это просто блокнот. И, конечно, не стесняйтесь запрашивать дополнительную информацию. Было бы здорово, если бы кто-то мог помочь.

Update 1 Alex Reynolds, спасибо за готовность помочь :) код (надеюсь, что это то, что вы хотели видеть):

NSEntityDescription * wordEntityDescription; //that's the declaration (Captain Obviousity :) 
wordEntityDescription = [NSEntityDescription entityForName: @"Word" inManagedObjectContext: ctx]; 

Что касается предиката - не возражаю. Я вообще удалял предикат (просто хватал все записи), и это не делало никаких различий.

Опять же, тот же код отлично работает в настольном приложении, и это сводит меня с ума (конечно, мне нужно будет добавить материал для управления памятью, но он, по крайней мере, должен производить почти одинаковое поведение, не должен it?)

ответ

0

Можете ли вы добавить код, чтобы показать, как wordEntityDescription определен?

Кроме того, я думаю, что вы хотите:

NSError *error = nil;

Вы можете переключить равно символ like и использовать засечки вокруг searchText поля:

[request setPredicate: [NSPredicate predicateWithFormat: @"word like '%@'", searchText]];

NSPredicate объекты не ставятся вместе например, SQL, к сожалению. За дополнительной информацией обращайтесь к Apple NSPredicate programming guide.

+0

Я обновил вопрос. – Anton

+0

Я не вижу достаточного количества кода и ошибки, чтобы предложить дополнительную помощь, извините. Может быть, вы можете удалить свое приложение для iPhone из симулятора/телефона, чтобы создать новый хранилище данных в качестве элемента управления? (Если работает новый магазин, возникает проблема с вашим предварительно упакованным хранилищем SQLite.) Вы недавно изменили схему для приложения iPhone? –

+0

Я ничего не изменил в схеме. Вероятно, вы можете направить меня к решению, если я объясню, что я сделал: 1) Создано обычное приложение для рабочего стола с поддержкой основных данных 2) Определена схема 3) Предпочитаемый SQLite с использованием приложения Core Data from Desktop 4) Переданный файл SQLite на iPhone (папки, путь и т. Д. В порядке, проверено) 5) Связал мою схему и сущности с проектом iPhone 6) Пытался использовать его на iPhone iPhone и симулятор сосать так же. Надеюсь, это объясняет неясность. – Anton

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