2016-04-16 36 views
7

我最初下載了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方法來檢查數值,然後更新

fbsdk browser permissions login

只要我在此屏幕上按下OK了崩潰的第二次。我怎樣才能調試呢?該操作不在我的應用程序,它在瀏覽器中,所以我不知道該從哪裏去..

+0

檢查您的響應和字典創建,看起來像你試圖插入零 – HardikDG

回答

3

我近期遇到過這個問題,我通過在Appdelegate.m中添加這段代碼解決了這個問題。

- (void)applicationDidBecomeActive:(UIApplication *)application {  

    [FBSDKAppEvents activateApp]; 
} 

爲SWIFT版本3:

func applicationDidBecomeActive(_ application: UIApplication) { 

    FBSDKAppEvents.activateApp() 
} 
+1

此解決方案適合我!謝謝 – havak5

0

雖然這不一定是一個全面的解決方案,但我已經耗盡了我的調試方法。我從我的podfile中刪除了FBSDK,運行pod update將它們從項目中刪除,並在我的框架文件夾中重新安裝了4.10版本的FBSDK。當facebook發佈FBSDK的更新版本後,我會再次嘗試更新此問題。

+0

你設法解決這個問題嗎? – khose

1

更新爲4。12,它根據自己的發行說明修復該問題:

https://developers.facebook.com/docs/ios/change-log-4.x/

,說的部分:

固定

  • 固定的情況下,AppEvents可能因爲缺少會話ID的崩潰。
  • 修正了在某些情況下訪問令牌過期日期是刷新日期的問題。
+0

這太棒了!感謝更新 – havak5

相關問題