2010-05-26 1 views
0

Может кто-нибудь пролить некоторый свет на то, почему это мое приложении врезаться со следующей ошибкой на iPhone OS 2.2.1обратной совместимости при использовании Core Data

dyld: Symbol not found: _OBJC_CLASS_$_NSPredicate 
    Referenced from: /var/mobile/Applications/456F243F-468A-4969-9BB7-A4DF993AE89C/AppName.app/AppName 
    Expected in: /System/Library/Frameworks/Foundation.framework/Foundation 

У меня есть слабый связанный CoreData.framework, и имеет базу SDK установлен на 3.0, а параметр развертывания установлен на SDK 2.2

Приложение уже использует другие функции 3.0, если доступно, и у меня не было никаких проблем с ними. Но, по-видимому, методы обратной совместимости, используемые для других функций, не работают с Core Data.

Приложение вылетает перед вызовом приложения делегата приложенияDidFinishLaunching.

Вот журнал отладки:

[Session started at 2010-05-25 20:17:03 -0400.] 
GNU gdb 6.3.50-20050815 (Apple version gdb-1119) (Thu May 14 05:35:37 UTC 2009) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys001 
Loading program into debugger… 
sharedlibrary apply-load-rules all 
warning: Unable to read symbols from "MessageUI" (not yet mapped into memory). 
warning: Unable to read symbols from "CoreData" (not yet mapped into memory). 
Program loaded. 
target remote-mobile /tmp/.XcodeGDBRemote-12038-42 
Switching to remote-macosx protocol 
mem 0x1000 0x3fffffff cache 
mem 0x40000000 0xffffffff none 
mem 0x00000000 0x0fff none 
run 
Running… 
[Switching to thread 10755] 
[Switching to thread 10755] 
Re-enabling shared library breakpoint 1 
Re-enabling shared library breakpoint 2 
Re-enabling shared library breakpoint 3 
Re-enabling shared library breakpoint 4 
Re-enabling shared library breakpoint 5 
(gdb) continue 
warning: Unable to read symbols for ""/Users/alex/iPhone Projects/AppName/build/Debug-iphoneos"/AppName.app/AppName" (file not found). 
dyld: Symbol not found: _OBJC_CLASS_$_NSPredicate 
    Referenced from: /var/mobile/Applications/456F243F-468A-4969-9BB7-A4DF993AE89C/AppName.app/AppName 
    Expected in: /System/Library/Frameworks/Foundation.framework/Foundation 

(gdb) 

ответ

0

К сожалению, как раз перечитал ваш вопрос .. Похоже, рамки сама не может быть слабо связаны между собой. Я предполагаю, что это означает, что вы не можете иметь цель 2.x с базой данных керна :(

т.е. вся структура не доступна на целевой платформе, и слабое связывание не применяется.

+0

Спасибо за ответ. Разве это не так для других фреймворков, представленных с 3.0, например MediaPlayer и MessageUI? Они также не существуют на целевой платформе. –

+0

Возможно. Возможно, вы случайно использовали «NSPredicate», который не является конкретно базовым, но предоставленным им. Подтверждаете ли вы, что 'applicationDidFinishLaunching' не достигается с точкой останова? Существуют ли какие-либо категории категорий, которые вы связываете/используете, которые требуют «NSPredicate»? – ohhorob

+0

Не использовать NSPredicate в другом месте. Я установил точку останова в начале приложенияDidFinishLaunching, и приложение сработает, прежде чем нанести удар. –

1

Видимо, вы можете «т ссылка NSPredicate символ буквального класса, если не будет иметь обратную совместимость с iPhone OS 2.2

Так изменила мою ссылку на NSPredicate на:.

[fetchRequest setPredicate:[NSClassFromString(@"NSPredicate") predicateWithFormat:@"EntryId == %@", [NSNumber numberWithInt: index]]]; 

и теперь работает

См. https://devforums.apple.com/message/225591#225591

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

  • Нет связанных вопросов^_^