新しいiOSParse 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)
スクリーンショット:
Parse1.6.4およびFacebookSDK 3.23の一時的な回避策:
インポート後、実装セクションの前の定数に従って、AppDelegate.mまたは別のクラスに追加します。
NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";
@interface IPAppDelegate ()
@end
@implementation IPAppDelegate
Parse/Facebook側で解決されるまで、問題は解決するはずです。
-更新:このソリューションは、上記のFacebookおよびParse SDKバージョンのみを対象としており、これらのバージョンは現在古くなっています。
新しいParseSDK1.7.4は新しいFacebookSDK 4.0で正しく動作し、そのような問題は発生しないはずです。
私はParseiOSv1.6.3を必要とする人のURLを見つけることができました。
https://parse.com/downloads/ios/parse-library/1.6.
1.6.3を使用して、すべてが正しくコンパイルされることを確認できます。
配置
NSString *const BFTaskMultipleExceptionsException = @"BFMultipleExceptionsException";
インポートと実装の間にSergeySurkovによって提案されたように、App Delegateで、ビルドフェーズでlibstdc ++。6.dylibを追加するとうまくいきました。こちらもご覧ください https://stackoverflow.com/a/27628797/1036945
Parse(1.7.4)とFacebook(4.2.0)の最新のSDKを使用しても、まったく同じ問題が発生しました。この問題は、ParseSDKとFacebookSDKの両方に含まれているBolts.frameworkが原因で発生します。何らかの理由で、ParseのBoltsフレームワークは、FacebookSDKに含まれているフレームワークよりも常に新しいものです。
ドラッグアンドドロップ方式を使用し、Cocoapodsを介して、これらのSDKのインストール、削除、および再インストールを何度も試みた後、私は最終的に次の手順を実行することでこの問題を克服することができました。
ドラッグアンドドロップ方式を使用して、Parseフレームワークをプロジェクトに再度追加しました。 Facebookログインを介してユーザーを作成するために必要だったため、ParseFacebookUtilsV4フレームワークも追加しました。
これはすべてを解決する最も重要なステップでした。Parseが提供するBolts.frameworkをプロジェクトにドラッグして追加しましたが、プロジェクトにコピーしないように注意しました(FBSDKCoreKitフレームワークと同様に、[アイテムのコピー]の選択を解除しました。宛先グループのフォルダに移動します。」オプション。プロジェクトフォルダにコピーすると、プロジェクトはビルドされません。
これらのステップは最終的に私のすべての問題を解決しました。
ココアポッドを使用している場合は、pod update Bolts
を試してください
EDIT2:FacebookSDK Update 3.23.2はこの問題を解決し、Bolts 1.1.4を含みます: https://developers.facebook.com/resources/facebook-ios-sdk-3.23.2.pkg
編集:ビルド設定から-ObjC「その他のリンカーフラグ」を削除します。
Facebook SDKが統合されている場合、ParseではBolts.frameworkは必要ありません。
Facebook iOS SDK 3.14以降、bolts.frameworkが含まれています。 https://developers.facebook.com/docs/ios/upgrading-3.x
bolts.frameworkの手動インスタンスを削除してみてください。
記録をまっすぐにするためだけに。
この問題は、Facebook SDKBoltsとParseboltsフレームワークの間のBoltsフレームワークとの競合が原因で発生します。この問題を回避するための一時的な解決策は、Facebook SDKの依存関係にCocoapodsを使用することです。これは、修正作業中に役立ちます。
バグはFacebookによって認識されており、修正のために適切なチームに割り当てられています。
更新については https://developers.facebook.com/bugs/383331175179417/ に従ってください。
解析フォルダ全体( "parse-library-1.7.4-2")をxcodeプロジェクトにドラッグしたため、同様のエラー( "... is not adylib"および "Undefined symbol forarchitecture")が発生しました。必要なフレームワーク(「Bolts.framework」と「Parse.framework」)のみをドラッグしました。解析フォルダを削除し、2つのフレームワークにドラッグすると、すべてが期待どおりに機能します:)
facebook sdkフレームワークとboltsフレームワーク(fb sdkに付属)がプロジェクトにインポートされていることを確認してください。