Я после этого урока здесь: http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_8_Application_using_Swift_and_FMDB - к сожалению, она написана для Xcode 6, а не 7.Связывание с SQLite в Xcode 7
я последовал за эти действия до «Создание и подготовка проекта SQLite Application»:
После создания проекта следующим шагом является настройка проекта на включение динамической библиотеки SQLite (libsqlite3.dylib) во время фазы компоновки процесса сборки. Несоблюдение этой библиотеки приведет к ошибкам сборки.
Чтобы добавить эту библиотеку, выберите целевую запись в навигаторе проектов Xcode (верхняя запись с названием продукта), чтобы отобразить панель «Общая информация». Перейдите на вкладку «Сборка фаз», чтобы отобразить информацию о сборке. В разделе «Связывание двоичных файлов с библиотеками» перечислены библиотеки и фреймворки, уже включенные в проект. Чтобы добавить другую библиотеку или структуру, нажмите кнопку «+», чтобы отобразить полный список. В этом списке найдите, а затем выберите libsqlite3.dylib и нажмите «Добавить».
... однако libsqlite3.dylib
не в списке, поэтому я выбрал libsqlite3.tbd
вместо (libsqlite3.0.tbd
была включена в список, но я не выбрал его).
Однако, когда я построить проект я получаю этот выход:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_FMDatabase", referenced from:
type metadata accessor for __ObjC.FMDatabase in Database.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
я нашел это КИ, которая не очень помогают (Undefined symbols for architecture i386 using libsqlite3.dylib with FMDB Xcode 7 ios9), потому что решения, предлагаемые должны либо добавить libsqlite3.dylib
(который не делает есть, я искал в своей файловой системе), или добавить ссылку на libsqlite3.tbd
, которую я уже сделал.
Вот моя команда линкер (отформатирован для удобства чтения):
Ld build/Debug-iphonesimulator/MyApp.app/MyApp normal i386
cd "/Users/me/src-me/MyApp"
export IPHONEOS_DEPLOYMENT_TARGET=9.2
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-arch i386
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk
-L/Users/(me)/src-me/MyApp/build/Debug-iphonesimulator
-F/Users/(me)/src-me/MyApp/build/Debug-iphonesimulator
-filelist /Users/(me)/src-me/MyApp/build/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp.LinkFileList
-Xlinker
-rpath
-Xlinker @executable_path/Frameworks
-mios-simulator-version-min=9.2
-Xlinker
-objc_abi_version
-Xlinker 2 -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator
-Xlinker
-add_ast_path
-Xlinker /Users/(me)/src-me/MyApp/build/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp.swiftmodule
-lsqlite3
-framework ExternalAccessory
-Xlinker
-dependency_info
-Xlinker /Users/(me)/src-me/MyApp/build/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp_dependency_info.dat
-o /Users/(me)/src-me/MyApp/build/Debug-iphonesimulator/MyApp.app/MyApp
Неопределенные символы «_OBJC_CLASS _ $ _ FMDatabase» указывают на то, что проблема связана с * not * со ссылкой на libsqlite, но с добавлением файлов FMDB. Вы дважды проверили, что во всех файлах .m включен флажок «Целевое членство»? –