2017-05-17 209 views
1

我在swift文件中有以下函數。我使用NSDate代替startDate從Obj C文件中調用它。很多時候,並非每次,我的應用程序都崩潰了「Date._unconditionallyBridgeFromObjectiveC(NSDate?)」。我怎樣才能解決這個問題?Swift 3中的Date._unconditionallyBridgeFromObjectiveC(NSDate?)崩潰

func trackMeetingEnded(_ name: String, startDate: Date, backgroundTime: TimeInterval) {} 

堆棧跟蹤

 
Crashed: com.apple.main-thread 
0 libswiftFoundation.dylib  0x102061e98 static Date._unconditionallyBridgeFromObjectiveC(NSDate?) -> Date + 72 
1 Acid       0x10017ece4 @objc static ClusteredMixpanel.trackMeetingEnded(String, startDate : Date, backgroundTime : Double) ->() (MixpanelMeeting.swift) 
2 Acid       0x10073e1bc __56-[MeetingLifeCycleViewController stateInitialization]_block_invoke.221 (MeetingLifeCycleViewController.m:267) 
3 Acid       0x1001ee5c4 partial apply for thunk (StateMachine.swift) 
4 Acid       0x1001ea70c specialized State.willLeaveState(State) ->() (StateMachine.swift:238) 
5 Acid       0x1001ead90 specialized StateMachine.transitionToState(State) -> Bool (StateMachine.swift) 
6 Acid       0x1001e1f18 @objc StateMachine.transitionToState(State) -> Bool (StateMachine.swift) 
7 Acid       0x10073ace0 -[MeetingLifeCycleViewController dismissCall] (MeetingLifeCycleViewController.m:538) 
8 Acid       0x10086d648 -[InMeetingViewController hangup] (InMeetingViewController.m:531)

enter code here

相信的NSDate到日期的轉換是通過OS在這種情況下完成的。只有在遷移到Swift後才能看到該問題。3.是否有任何已知的問題?我在網上找不到任何東西:(

+0

粘貼您的功能或代碼 – kb920

回答

2

您可能需要仔細檢查來自Objective-C的NSDate實際上是否爲非nil,因爲沒有任何內容在Obj-C一側主動執行此操作雨燕的側面。

我結束了儘可能多的Date S轉換到Date? S作爲我能找到正在從對象 - 調用,然後做了一大堆的guard let檢查。

您也可以扔在一個assertionFailure當你在開發關於那些日期在哪裏的時候對你大吼你不期待來自。例如:

guard let date = passedInDate else { 
    assertionFailure("Turns out the passed-in date was nil!") 
    return 
} 

然後看看你的堆棧跟蹤時被擊中,看看你是否可以得到,爲什麼你卻得到了意想不到nil值有更好的抓地力。

更新:Here是Swift源代碼中發生崩潰的地方。

+1

我必須將startDate設置爲可選。事實證明,零被通過。 – Vinuta