58 lines
1.6 KiB
Swift
58 lines
1.6 KiB
Swift
//
|
|
// Example
|
|
// man
|
|
//
|
|
// Created by man 11/11/2018.
|
|
// Copyright © 2020 man. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class _CrashModel: NSObject, NSCoding {
|
|
|
|
var id: String
|
|
var date: Date
|
|
var reason: String?
|
|
var name: String?
|
|
var callStacks: [String]?
|
|
|
|
|
|
init(name: String, reason: String?) {
|
|
id = UUID().uuidString
|
|
date = Date()
|
|
self.reason = reason
|
|
self.name = name
|
|
callStacks = Thread.callStackSymbols
|
|
}
|
|
|
|
func encode(with aCoder: NSCoder) {
|
|
aCoder.encode(id, forKey: "id")
|
|
aCoder.encode(date, forKey: "date")
|
|
aCoder.encode(reason, forKey: "reason")
|
|
aCoder.encode(name, forKey: "name")
|
|
aCoder.encode(callStacks, forKey: "callstacks")
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
id = aDecoder.decodeObject(forKey: "id") as? String ?? ""
|
|
date = aDecoder.decodeObject(forKey: "date") as? Date ?? Date()
|
|
reason = aDecoder.decodeObject(forKey: "reason") as? String
|
|
name = aDecoder.decodeObject(forKey: "name") as? String
|
|
callStacks = aDecoder.decodeObject(forKey: "callstacks") as? [String]
|
|
}
|
|
|
|
func toString() -> String {
|
|
let stringContent = NSMutableString()
|
|
stringContent.append("Date: \(String(describing: _OCLoggerFormat.formatDate(date)))\n")
|
|
stringContent.append("Name: \(name ?? "N/A")\n")
|
|
stringContent.append("Reason: \(reason ?? "N/A")\n")
|
|
|
|
let stacks = (callStacks ?? []).reduce("", {
|
|
return "\($0)\($1)\n"
|
|
})
|
|
stringContent.append(stacks)
|
|
return stringContent as String
|
|
}
|
|
}
|
|
|