2017-05-17 38 views
1

Ich habe folgende Funktion in einer schnellen Datei. Ich rufe dies von Obj C-Datei mit NSDate anstelle von StartDate. Und oft stürzt meine App nicht immer mit "Date._unconditionalBridgeFromObjectiveC (NSDate?)" Ab. Wie kann ich das beheben?Date._unconditionalBridgeFromObjectiveC (NSDate?) Absturz in Swift 3

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

Stapelüberwachung

 
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

I NSDate to Date Umwandlung glauben wird von O in diesem Fall getan. Das Problem tritt erst nach der Migration auf Swift 3 auf. Gibt es bekannte Probleme? Ich konnte nichts online finden :(

+0

Paste Ihre Funktion oder Code – kb920

Antwort

2

Sie müssen wahrscheinlich überprüfen, dass die NSDate von Objective-C tatsächlich nicht nil ist, da es nichts gibt, das das auf der Obj-C-Seite aktiv durchsetzt die Swift Seite.

ich zog so viele Date s Date? s Umwandlung als ich von Obj-C genannt wird, dann tut eine ganze Menge guard let Schecks.

Sie können auch in eine assertionFailure werfen finden könnte Sie anschreien, wenn Sie in der Entwicklung sind, wo diese nil Termine y Sie erwarten nicht, kommen von. Zum Beispiel:

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

Dann nehmen Sie einen Blick auf Ihre Stack-Trace, wenn die getroffen wird, um zu sehen, ob Sie besser in den Griff bekommen kann, warum Sie einen unerwarteten nil Wert dort sind immer.

Update: Here, wo der Absturz im Swift-Quellcode auftritt.

+1

Ich musste StartDate als optional machen. Es stellt sich heraus, dass nichts passiert ist. – Vinuta