Throw error when not a valid NSKeyedArchive
This commit is contained in:
parent
d8c3229394
commit
0c015e2327
1 changed files with 24 additions and 26 deletions
|
@ -77,6 +77,28 @@ class Document: NSDocument {
|
|||
var remainderWidth: Int = 0
|
||||
var remainderHeight: Int = 0
|
||||
|
||||
struct SilicaParsingError: Error, LocalizedError {
|
||||
enum Kind {
|
||||
case invalid
|
||||
}
|
||||
|
||||
let kind: Kind
|
||||
let filename: URL?
|
||||
|
||||
public var errorDescription: String? {
|
||||
switch self.kind {
|
||||
case .invalid:
|
||||
return filename!.lastPathComponent + " is an invalid Silica Document."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func throwError(_ error: SilicaParsingError.Kind) {
|
||||
DispatchQueue.main.sync {
|
||||
let _ = presentError(SilicaParsingError(kind: error, filename: fileURL))
|
||||
}
|
||||
}
|
||||
|
||||
override init() {
|
||||
super.init()
|
||||
}
|
||||
|
@ -448,8 +470,6 @@ class Document: NSDocument {
|
|||
|
||||
let array = layersClass["NS.objects"] as! NSArray
|
||||
|
||||
//dump(dict, indent: 5)
|
||||
|
||||
for object in array {
|
||||
let layerClassID = getClassID(id: object)
|
||||
let layerClass = objectsArray[layerClassID] as! NSDictionary
|
||||
|
@ -464,7 +484,7 @@ class Document: NSDocument {
|
|||
// double check if this archive is really correct
|
||||
if let value = dict["$version"] {
|
||||
if (value as! Int) != NSKeyedArchiveVersion {
|
||||
Swift.print("This is not a valid document!")
|
||||
throwError(.invalid)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -481,28 +501,6 @@ class Document: NSDocument {
|
|||
}
|
||||
}
|
||||
|
||||
struct SilicaParsingError: Error, LocalizedError {
|
||||
enum Kind {
|
||||
case invalid
|
||||
}
|
||||
|
||||
let kind: Kind
|
||||
let filename: URL?
|
||||
|
||||
public var errorDescription: String? {
|
||||
switch self.kind {
|
||||
case .invalid:
|
||||
return filename!.lastPathComponent + " is an invalid Silica Document."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func throwError(_ error: SilicaParsingError.Kind) {
|
||||
DispatchQueue.main.sync {
|
||||
let _ = presentError(SilicaParsingError(kind: error, filename: fileURL))
|
||||
}
|
||||
}
|
||||
|
||||
override func read(from data: Data, ofType typeName: String) throws {
|
||||
self.data = data
|
||||
|
||||
|
|
Reference in a new issue