Social.framework
私のアプリは、とを使用してFacebookからいいねをインポートしACAccount
ます。Facebookアカウント識別子をに保存しNSUserDefaults
て、アプリがその後の起動時に新しいいいねを自動的にインポートできるようにします。最初のインポートは正常に機能します。ACAccount
問題は、後続の起動時にを再インスタンス化することです。
だから私はfacebookAccount
このようなゲッターを持っています:
- (ACAccount *)facebookAccount {
if(!_facebookAccount) {
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
NSString *accountIdentifier = [[NSUserDefaults standardUserDefaults] valueForKey:SWFacebookAccountIdentifierKey];
if(accountIdentifier)
_facebookAccount = [accountStore accountWithIdentifier:accountIdentifier];
}
return _facebookAccount;
}
これは、どういうわけか不完全なACAccount
オブジェクトを返します。
type:(null)
identifier: B6E94A67-AF94-408F-A618-6CD4D78564DC
accountDescription: Facebook
username: samvermette@gmail.com
objectID: x-coredata://589C098E-F829-4284-841B-EE4A0003FF21/Account/p2
enabledDataclasses: {(
)}
enableAndSyncableDataclasses: {(
)}
properties: {
fullname = "Sam Vermette";
uid = 716308665;
}
parentAccount: (null)
owningBundleID:(null)
これは、このオブジェクトを使用することになるメソッドからログに記録されます。ご覧のとおり、type
値はですnull
。これにより、アプリは次の例外をスローします。
NSInvalidArgumentException'、reason:'このリクエストのアカウントタイプが無効です
さて、最も奇妙なことは、ゲッターNSLog(_facebookAccount)
の直前に追加した場合、キーがnullでなく、アプリがクラッシュしないことです。NSLogがこれを修正することは、私のコードに問題があることのヒントかもしれないことを理解していますが、正確に何を理解することはできません。何か案は?return
type