Parse API 1.6.4 - не может собрать проект
Я скачал новый iOS Parse API (1.6.4) и попытался построить свой проект. Когда я это делаю, я получаю эту ошибку:
Undefined symbols for architecture arm64" "_BFTaskMultipleExceptionsException", referenced from:
___53+[PFObject(Private) deleteAllAsync:withSessionToken:]_block_invoke214 in Parse(PFObject.o)
___65+[PFObject(Private) _deepSaveAsync:withCurrentUser:sessionToken:]_block_invoke311 in Parse(PFObject.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Скриншот:
11 ответов
Временное решение для Parse 1.6.4 и Facebook SDK 3.23:
Добавьте в свой AppDelegate.m или другой класс следующую константу после импорта и перед разделом реализации:
NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";
@interface IPAppDelegate ()
@end
@implementation IPAppDelegate
Это должно решить проблему, пока она не будет решена на стороне Parse/Facebook.
- Обновление: это решение предназначено только для версий Facebook и Parse SDK, которые перечислены выше, и эти версии сейчас устарели.
Новый Parse SDK 1.7.4 корректно работает с новым Facebook SDK 4.0, и такой проблемы быть не должно.
Я смог выяснить URL для любого, кто нуждается в Parse iOS v1.6.3.
https://parse.com/downloads/ios/parse-library/1.6.3
Я могу подтвердить, что все правильно компилируется с помощью 1.6.3.
У меня была точно такая же проблема с использованием последних SDK от Parse (1.7.4) и Facebook (4.2.0). Проблема вызвана тем, что Bolts.framework включен в SDK Parse и Facebook. По какой-то причине инфраструктура Bolts в Parse всегда новее, чем в Facebook SDK.
После многих попыток установки, удаления и переустановки этих SDK с использованием метода перетаскивания и с помощью Cocoapods мне, наконец, удалось преодолеть эту проблему, выполнив следующие шаги:
- Я полностью удалил все экземпляры фреймворков Parse, Facebook и Bolts из моего проекта;
- Я повторно добавил инфраструктуру FBSDKCoreKit (а также ShareKit и LoginKit для нужд моего проекта), выполнив шаги на странице разработчика Facebook: https://developers.facebook.com/docs/ios/getting-started/ Убедитесь, что НЕ скопировать элементы в ваш проект.
Я повторно добавил инфраструктуру Parse в проект, используя метод перетаскивания. Я также добавил фреймворк ParseFacebookUtilsV4, потому что он мне нужен для создания пользователей через Facebook Login.
Это был самый важный шаг, который решил все: я добавил Bolts.framework, предоставленный Parse, перетаскивая его в проект, но убедившись, что НЕ скопировал его в проект (так же, как и в инфраструктуре FBSDKCoreKit, я снял флажок "Копировать элементы"). в папку целевой группы. ". Если вы скопируете его в папку проекта, проект не будет создан.
Эти шаги окончательно решили все мои проблемы.
Размещение
NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";
в приложении "Делегат", как предложил Сергей Сурков между импортом и реализацией, а затем добавление libstdC++.6.dylib на этапах сборки работало для меня. Пожалуйста, также просмотрите /questions/25737103/integratsiya-infrastrukturyi-analiza-s-suschestvuyuschim-prilozheniem-ios-vklyuchaya-aviary-sdk/25737117#25737117
EDIT2: обновление FacebookSDK 3.23.2 решает эту проблему и включает в себя болты 1.1.4: https://developers.facebook.com/resources/facebook-ios-sdk-3.23.2.pkg
РЕДАКТИРОВАТЬ: Удалить -ObjC "Другой флаг компоновщика" из ваших настроек сборки.
Bolts.framework не требуется с Parse, если Facebook SDK интегрирован.
Начиная с Facebook iOS SDK 3.14 bolts.framework включен. https://developers.facebook.com/docs/ios/upgrading-3.x
Попробуйте удалить свой ручной экземпляр bolts.framework.
Убедитесь, что в ваш проект импортированы фреймворк и болты Facebook sdk (поставляется с fb sdk).
Просто чтобы поставить запись прямо.
Эта проблема возникает из-за конфликта со структурой Bolts между болтами SDK Facebook и платформой Parse bolts. Временное решение этой проблемы - использование Cocoapods для вашей зависимости от SDK Facebook, которая поможет в процессе работы над исправлением.
Ошибка была подтверждена Facebook и назначается соответствующей команде для исправления.
Пожалуйста, следуйте https://developers.facebook.com/bugs/383331175179417/ для обновления.
Я получил аналогичную ошибку ("... не является dylib" и "неопределенные символы для архитектуры"), потому что я перетащил всю папку синтаксического анализа ("parse-library-1.7.4-2") в мой проект xcode, когда я должен перетащил только те рамки, которые мне были нужны ("Bolts.framework" и "Parse.framework"). удалил папку разбора, перетянул на две рамки, потом все работает как положено:)
У меня была точно такая же проблема. Обновление Болтов до 1.1.4 решило это для меня (Болты были 1.1.3 раньше).
Если вы используете cocoapods, измените или добавьте эту строку в ваш подфайл
pod 'Bolts', '1.1.4'
Если нет, просто скачайте его здесь: https://github.com/BoltsFramework/Bolts-iOS/releases
Попробуйте загрузить последний SDK и заменить все инфраструктуры Parse последней версией.