Core Data iPhone вылетает при получении запроса - PullRequest
0 голосов
/ 14 сентября 2009

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

        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: error: не удается глубоко внутри Core Data (в NSSQLCore _newRowsForFetchPlan: selectedBy: withArgument), что приводит к ошибке 256 для внешнего кода.

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

Есть идеи?

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

Обновление 1 Алекс Рейнольдс, спасибо за готовность помочь :) Код (надеюсь, это то, что вы хотели увидеть):

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

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

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

1 Ответ

0 голосов
/ 14 сентября 2009

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

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

NSError *error = nil;

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

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

NSPredicate объекты не скомпонованы, как SQL, к сожалению. Обратитесь к руководству Apple по NSPredicate за дополнительной информацией.

...