我最初下載了FBSDK的4.10版本,並將它們放置到我的應用程序中,將它們放置在frameworks文件夾中。意識到這些將不會隨着時間的推移而得到更新,我將它們完全刪除,並試圖將它們作爲豆莢添加到我的項目中。成功安裝了pod,我已經在我的橋接頭文件中正確導入了它們,並且沒有其他問題。豆莢更新安裝版本4.11導致我頭痛。當我進入主屏幕時,使用Facebook Login SDK進行應用程序崩潰
我正在使用FBSDKLoginKit將用戶登錄到他們的帳戶並從中檢索信息。我能夠通過用戶信息找回字典。然後用segue將這些信息傳遞給下一個ViewController。在此之後的任何時候,如果我按下我的iPhone或模擬器上的主頁按鈕,應用程序將崩潰。我得到的錯誤是
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]:
attempt to insert nil object from objects[3]'
這個例外情況也發生,如果我讓用戶通過Facebook登錄,Segue公司新的視圖控制器,放鬆到以前的視圖控制器,然後嘗試重新登錄。我曾嘗試在第二個屏幕上檢索相關信息時將用戶註銷,但錯誤仍然存在。
我看到一個類似的問題,問「解決方案」在哪裏,FBSDKLoginKit將檢索到的字典寫入一個變量,如果它檢索的字典有nil值,則會拋出該錯誤。
有什麼我可以做的,以防止它發生之前呢?有沒有人找到解決辦法?
這裏是從模擬器我的輸出當我按家:
*** First throw call stack:
(
0 CoreFoundation 0x0000000106f03d85 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010643edeb objc_exception_throw + 48
2 CoreFoundation 0x0000000106e0023e -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 318
3 CoreFoundation 0x0000000106e125bb +[NSDictionary dictionaryWithObjects:forKeys:count:] + 59
4 APPNAME 0x0000000101607a1e -[FBSDKTimeSpentData instanceSuspend] + 622
5 APPNAME 0x000000010160766b +[FBSDKTimeSpentData suspend] + 59
6 APPNAME 0x00000001015b5986 -[FBSDKAppEvents applicationMovingFromActiveStateOrTerminating] + 262
7 CoreFoundation 0x0000000106ecdc8c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
8 CoreFoundation 0x0000000106ecd9cb _CFXRegistrationPost + 427
9 CoreFoundation 0x0000000106ecd732 ___CFXNotificationPost_block_invoke + 50
10 CoreFoundation 0x0000000106f161e2 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1986
11 CoreFoundation 0x0000000106dc5679 _CFXNotificationPost + 633
12 Foundation 0x000000010372ccd9 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
13 UIKit 0x0000000104a685ad -[UIApplication _deactivateForReason:notify:] + 629
14 UIKit 0x0000000104a6f1f1 __61-[UIApplication _sceneSettingsPreLifecycleEventDiffInspector]_block_invoke + 104
15 FrontBoardServices 0x0000000108f88d6c __52-[FBSSettingsDiffInspector inspectDiff:withContext:]_block_invoke27 + 213
16 Foundation 0x000000010377d5bb __NSIndexSetEnumerate + 1016
17 BaseBoard 0x000000010901ba8c -[BSSettingsDiff inspectChangesWithBlock:] + 116
18 FrontBoardServices 0x0000000108f83e4a -[FBSSettingsDiff inspectOtherChangesWithBlock:] + 92
19 FrontBoardServices 0x0000000108f88b2f -[FBSSettingsDiffInspector inspectDiff:withContext:] + 317
20 UIKit 0x0000000104a70880 __70-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 127
21 UIKit 0x0000000104a7052d -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 843
22 FrontBoardServices 0x0000000108f978c8 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
23 FrontBoardServices 0x0000000108f97741 -[FBSSerialQueue _performNext] + 178
24 FrontBoardServices 0x0000000108f97aca -[FBSSerialQueue _performNextFromRunLoopSource] + 45
25 CoreFoundation 0x0000000106e29301 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
26 CoreFoundation 0x0000000106e1f22c __CFRunLoopDoSources0 + 556
27 CoreFoundation 0x0000000106e1e6e3 __CFRunLoopRun + 867
28 CoreFoundation 0x0000000106e1e0f8 CFRunLoopRunSpecific + 488
29 GraphicsServices 0x0000000108ae7ad2 GSEventRunModal + 161
30 UIKit 0x0000000104a72f09 UIApplicationMain + 171
31 APPNAME 0x00000001013a26d2 main + 114
32 libdyld.dylib 0x0000000107b0d92d start + 1
33 ??? 0x0000000000000001 0x0 + 1
) 的libC++ abi.dylib:與類型的未捕獲的異常終止NSException
一步運行我的代碼步驟我發現該方法過程中發生錯誤:
fbLoginManager.logInWithReadPermissions(permissionsNeeded, fromViewController: self) { (result, error) -> Void in
//crashes before it enters this block
//my code here
}
它甚至可以檢查錯誤值之前崩潰。我會嘗試步入fbsdk方法來檢查數值,然後更新
只要我在此屏幕上按下OK了崩潰的第二次。我怎樣才能調試呢?該操作不在我的應用程序,它在瀏覽器中,所以我不知道該從哪裏去..
檢查您的響應和字典創建,看起來像你試圖插入零 – HardikDG