1

crashlytics を iOS アプリに統合しました。そして、私はこのようなクラッシュログを取得しました

# Issue #: 1
# Issue ID: 59940bb4be077a4dcc2837ff
# Session ID: 
e68dd53b640d4ac39f21b511a9f78b78_90910b25826211e7a25d56847afe9799_0_v2
# Date: 2017-08-16T06:30:00Z
# OS Version: 10.3.3 (14G60)
# Device: iPhone 6s
# RAM Free: 3.8%
# Disk Free: 15.2%

#0. Crashed: com.apple.main-thread
0  MY APP                         0x100086b50 specialized static Functions.retunDateStringFromDateString(dateString : String, inuputFormat : String, outPutFormat : String) -> String (Functions.swift:123)
1  MY APP                         0x1000ef820 specialized TeamAttendanceViewController.tableView(UITableView, cellForRowAt : IndexPath) -> UITableViewCell (Functions.swift)
2  MY APP                         0x1000eaa78 @objc TeamAttendanceViewController.tableView(UITableView, cellForRowAt : IndexPath) -> UITableViewCell (TeamAttendanceViewController.swift)
3  UIKit                          0x193641d90 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 688
4  UIKit                          0x193641fa8 -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 80
5  UIKit                          0x19362f6ac -[UITableView _updateVisibleCellsNow:isRecursive:] + 2152
6  UIKit                          0x193646f98 -[UITableView _performWithCachedTraitCollection:] + 120
7  UIKit                          0x1933df49c -[UITableView layoutSubviews] + 176
8  UIKit                          0x1932f9cc0 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1200
9  QuartzCore                     0x1904ea274 -[CALayer layoutSublayers] + 148
10 QuartzCore                     0x1904dede8 
CA::Layer::layout_if_needed(CA::Transaction*) + 292
11 QuartzCore                     0x1904deca8 
CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32
12 QuartzCore                     0x19045a34c 
CA::Context::commit_transaction(CA::Transaction*) + 252
13 QuartzCore                     0x1904813ac 
CA::Transaction::commit() + 504
14 QuartzCore                     0x190481e78 
CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned 
long, void*) + 120
15 CoreFoundation                 0x18d1789a8 
__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
16 CoreFoundation                 0x18d176630 __CFRunLoopDoObservers 
+ 372
17 CoreFoundation                 0x18d176a7c __CFRunLoopRun + 956
18 CoreFoundation                 0x18d0a6da4 CFRunLoopRunSpecific + 
424
19 GraphicsServices               0x18eb11074 GSEventRunModal + 100
20 UIKit                          0x193361c9c UIApplicationMain + 208
21 MY APP                         0x10002f710 main 
(AppDelegate.swift:16)
22 libdyld.dylib                  0x18c0b559c start + 4

クラッシュ ログ ファイルを読むのはこれが初めてです。私が理解しているように。私のFunctionクラスのreturnDateStringメソッドの 123 行に問題があります。しかし、この行の正確な問題をどのように理解できますか? そして、これが Function クラスの私のメソッドです。

class func retunDateStringFromDateString(dateString : String,inuputFormat: String, outPutFormat : String) -> String{
    if(dateString != ""){
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = inuputFormat//this your string date format

        let date = dateFormatter.date(from: dateString)


        dateFormatter.dateFormat = outPutFormat///this is what you want to convert format

        let timeStamp = dateFormatter.string(from: date!)


        return timeStamp
    }else{
        return ""
    }

}

そして、これは私の 123 ラインです。 let timeStamp = dateFormatter.string(from: date!)

この理由は何でしょうか?私を助けてください。ありがとう

アップデート

var inTimeArray = inTime?.components(separatedBy: ".")
print(inTimeArray)

cell.inOneTime.text = Functions.nullToNilForString(value: Functions.retunDateStringFromDateString(dateString: (inTimeArray?[0])! ,inuputFormat: "yyyy-MM-dd'T'HH:mm:ss", outPutFormat:  "HH:mm") as AnyObject?)?.description
4

2 に答える 2

1

ここで最も可能性の高い問題は、オプションの日付パラメーターを強制的にアンラップしていることです。最初に dateString を日付に解析できない場合、date は nil になり、強制的にアンラップするとクラッシュが発生します。

代わりに次のようにしてみてください。

guard let date = dateFormatter.date(from: dateString) else {
    // handle the error
    return ""
}
//...
return dateFormatter.string(from: date)

オプションのドキュメントを参照して理解を深めてください https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

于 2017-08-16T10:37:20.543 に答える