Parse SDKを使用してきましたが、クイックステップガイドに従いました。実行しようとすると、これらの8つのエラーが表示されます。理由についてのアイデアはありますか?私が使用していないParseのFacebook部分と関係があるように見えます。
Undefined symbols for architecture armv7:
"_FBTokenInformationTokenKey", referenced from:
-[PFFacebookTokenCachingStrategy accessToken] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setAccessToken:] in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationExpirationDateKey", referenced from:
-[PFFacebookTokenCachingStrategy cacheTokenInformation:] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy expirationDate] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setExpirationDate:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_METACLASS_$_FBSessionTokenCachingStrategy", referenced from:
_OBJC_METACLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBSessionTokenCachingStrategy", referenced from:
_OBJC_CLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationUserFBIDKey", referenced from:
-[PFFacebookTokenCachingStrategy facebookId] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setFacebookId:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBRequest", referenced from:
objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
"_OBJC_CLASS_$_FBSession", referenced from:
objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
これは、Parse iOS 1.1.33リリースに関連する何らかのバグです。これは、複数の人が同じエラーを確認しているためです。
回避策がいくつかあります-
-ObjCリンカーフラグを必要とするライブラリを使用していない場合は、プロジェクトから-ObjCを削除できます。
ビルド設定>その他のリンカーフラグ> remove -ObjC
または、そのフラグを必要とするライブラリを使用している場合は、Facebook SDKを追加できます。
どちらのオプションもエラーを排除します。私のアプリにFacebook SDKが必要ないので、うまくいけば彼らはこれを修正します。
ここでの議論に従ってください:
FBキットをダウンロード、コンパイル、およびインストールするよりも簡単な回避策は、大きくて扱いにくいものです。もちろん、ParseでFBタイプの機能を使用することはできず、これらのダミーシンボルの使用を想定しているParseコードのいずれかをトリガーすると、重大な問題が発生することに注意してください。しかし、あなたが彼らから離れていれば、あなたは大丈夫だと思います。そう...
FBMissingSymbolsというオブジェクトをアプリケーションに作成します
不要な.hを削除します
これを.mに入れます。
NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end
古いParseFacebookUtils.framework
を削除し、新しいParseFacebookUtilsV4.framework
を保持して機能させる必要があります。
私はdbquarrelの答えが大好きでしたが、新しいソーシャルクラスが不足しているため、もう機能しません。
同じことをしますが、代わりにこれを追加します:
NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
NSString *SLServiceTypeTwitter = @"";
NSString *ACAccountTypeIdentifierTwitter = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end
@interface ACAccountStore:NSObject
@end
@implementation ACAccountStore
@end
@interface SLRequest:NSObject
@end
@implementation SLRequest
@end
@interface SLComposeViewController:NSObject
@end
@implementation SLComposeViewController
@end
「ParseFacebookUtils」フレームワークの2つのバージョンが追加されていないことを確認してください:
ParseFacebookUtilsV4およびParseFacebookUtils
ParseFacebookUtilsを削除してParseFacebookUtilsV4を保持すると、正常に機能しました。
私のソリューションは間違いなく機能し、他のリンカーフラグで-ObjCを使用できます。
乾杯....今では動作します..... -ObjCを削除する必要はありません。
「Accounts.Framework」や「Social.Framework」を追加する必要があるかもしれません。
@blueHulaによる回答を補完します。 ParseはフレームワークからFacebook SDKを削除しました。つまり、特定のバージョン(1.1.33など)からparse.frameworkを統合するには、FB SDKを個別に統合する必要があります。
このリンクを参照してください facebook sdkを含めずにios iOS解析を使用
重要な点は、_-all_load
_および_-ObjC
_を使用するのではなく、-force_load $(SRCROOT)/path/libname.a
を使用して必要なサードパーティライブラリとリンクすることです。
2015年で、同じエラーが発生しました。残念ながら、上記の答えはどれもうまくいきませんでした。しかし、これは:
ターゲット>ビルドフェーズ>ライブラリとバイナリをリンクその後libstdc ++。6.dylibを追加
これで問題は解決しました。
私は同じ使い方をしており、唯一のサードパーティはPaypal SDKでした。 -ObjCを削除すると、すべてが正常に構築されました。 (設定を変更する前に常にプロジェクトのバックアップを作成します)
これはリンカエラーです...含まれているヘッダーファイルの1つで参照しているプロジェクトに、必要なフレームワークが含まれていません。
したがって、たとえば、コードにインクルードがある場合:
#import <Parse/Parse.h>
おそらくサポートフレームワークが必要であり、アプリに含める必要があります。 Xcodeからparse.framework
を含めましたか?
-ObjCフラグをその他のリンクフラグとして設定する必要があるフレームワークは多数ありますが、Parseでは、そうする場合は続行できません。これに対処するには、次のいずれかを実行できます。 -ObjCフラグを必要とするGoogle Maps SDKの例を示しましたが、同じプロジェクトの解析のため、直接使用することはできません。
解決策1-force_loadフラグを使用
-ObjCフラグをその他のリンクフラグとして設定する代わりに、force_loadフラグを使用して特定のフレームワークまたはライブラリをロードします。
-force_load $(SRCROOT)/GoogleMaps.framework/Versions/A/GoogleMaps
ソリューション2-Facebook SDKの使用
Facebook SDKを別のフレームワークとして追加するだけです。これにより、-ObjCフラグを使用できます。また、Accounts.framework
とSocial.framework
を追加したことを確認してください。 Bolt.frameworkを追加し、Parse blank projectを使用している場合、重複シンボルを処理するにはBolt.framwork
を削除します。それでもまだエラーが少ない場合は、アカウントとソーシャルフレームワークを削除して、もう一度追加します(デフォルトの空白のプロジェクトの解析を使用した場合がこれに該当します)。