iOSアプリでFacebook v4 SDKを使用しています。関連情報を得るために、私はよくシングルトン[FBSDKProfile currentProfile]
を使います。しかし、私はまた、簡単にアクセスできるようにプロファイル画像を必要とするので、これを取るカテゴリを書いた。認識できないセレクタがFBSDKProfileカテゴリのインスタンスに送信されました
これは、ヘッダファイルされる:
#import "FBSDKProfile+ProfileImage.h"
@interface FBSDKProfile()
@property (nonatomic, strong, readwrite) UIImage *profileImage;
@end
@implementation FBSDKProfile (ProfileImage)
+(void)fetchProfileImageWithBlock:(void (^)(BOOL succeeded))handler {
FBSDKProfile *currentProfile = [FBSDKProfile currentProfile];
NSString *userId = currentProfile.userID;
if (![userId isEqualToString:@""] && userId != Nil)
{
[self downloadFacebookProfileImageWithId:userId completionBlock:^(BOOL succeeded, UIImage *profileImage) {
currentProfile.profileImage = profileImage;
if (handler) { handler(succeeded); }
}];
} else
{
/* no user id */
if (handler) { handler(NO); }
}
}
+(void)downloadFacebookProfileImageWithId:(NSString *)profileId completionBlock:(void (^)(BOOL succeeded, UIImage *profileImage))completionBlock
{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large", profileId]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if (!error)
{
UIImage *image = [[UIImage alloc] initWithData:data];
completionBlock(YES, image);
} else{
completionBlock(NO, nil);
}
}];
}
@end
しかし、私はこの例外を取得しています:キャッチされない例外が原因
終端アプリ「ここで実装ファイルが
#import <FBSDKCoreKit/FBSDKCoreKit.h>
@interface FBSDKProfile (ProfileImage)
+(void)fetchProfileImageWithBlock:(void (^)(BOOL succeeded))handler;
@property (nonatomic, strong, readonly) UIImage *profileImage;
@end
ですNSInvalidArgumentException '、理由:' - [FBSDKProfile setProfileImage:]:インスタンスに送信された認識できないセレクタ
なぜですか?あなたが使用することができます
に
readonly
属性を割り当てないでください。 – Lionプロパティは、カテゴリ内で自動合成されません。独自のゲッターとセッターを作成し、イメージ用に独自のストレージを用意する必要があります。 – dan
@ダンあなたはこれを詳しく教えていただけますか?合成しようとすると、このエラーが表示されます:** @カテゴリの実装では合成できません** – Erik