我的應用從Social.framework
和ACAccount
導入喜歡從Facebook。我將Facebook帳戶標識保存到NSUserDefaults
,以便應用程序可以在後續啓動時自動導入新喜好。第一個導入工作正常。問題是在後續啓動時重新實例化ACAccount
。NSLog修復缺失值/崩潰?
所以我有一個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: [email protected]
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「的,理由是:」無效的賬戶類型對於此請求
現在,奇怪的是,如果我在我的獲得者的return
之前加上NSLog(_facebookAccount)
,則type
鍵不爲空,並且我的應用不會崩潰。我意識到,NSLog修復這可能暗示我的代碼有問題,但我無法弄清楚究竟是什麼。有任何想法嗎?
必須保留_facebookAccount,如果你是回來後寫的NSLog,這將顯示垃圾值,因爲它已經返回固定這一點。 – fibnochi
@fibnochi他使用ARC,所以他不能使用保留。事實上,山姆,你可以將它存儲在一些伊維爾或全球變量中,然後嘗試打印它。 –
facebookAccount被設置爲一個強大的屬性,因此它被保留。問題是我需要保持accountStore。 – samvermette