make the error throwable

This commit is contained in:
Pfeil, Scott Robert 2020-01-14 09:12:09 -05:00
parent 198ebe722b
commit 447df655df
6 changed files with 23 additions and 18 deletions

View File

@ -32,6 +32,6 @@ extension MFViewController: MoleculeDelegateProtocol {
}
public extension MFViewController {
@objc func parsePageJSON() {
@objc func parsePageJSON() throws {
}
}

View File

@ -96,7 +96,15 @@
- (BOOL)shouldFinishProcessingLoad:(nonnull MVMCoreLoadObject *)loadObject error:(MVMCoreErrorObject *_Nonnull *_Nonnull)error {
self.pageType = loadObject.pageType;
self.loadObject = loadObject;
[self parsePageJSON];
NSError *parseError = nil;
[self parsePageJSONAndReturnError:&parseError];
if (parseError) {
if (error) {
*error = [MVMCoreErrorObject createErrorObjectForNSError:parseError location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]];
}
return false;
}
// Verifies all modules needed are loaded.
return [MFViewController verifyRequiredModulesLoadedForLoadObject:loadObject error:error];
@ -250,7 +258,8 @@
- (BOOL)newPageLoaded:(nonnull NSDictionary *)page {
self.loadObject.pageJSON = page;
[self parsePageJSON];
NSError *parseError = nil;
[self parsePageJSONAndReturnError:&parseError];
return YES;
}

View File

@ -14,15 +14,11 @@ public protocol TemplateProtocol: class {
}
public extension TemplateProtocol where Self: MFViewController {
func parseTemplateJSON() {
func parseTemplateJSON() throws {
guard let pageJSON = self.loadObject?.pageJSON else { return }
do {
let data = try JSONSerialization.data(withJSONObject: pageJSON)
let decoder = JSONDecoder()
let templateModel = try decoder.decode(TemplateModel.self, from: data)
self.templateModel = templateModel
} catch {
MVMCoreUILoggingHandler.logDebugMessage(withDelegate: "error: \(error)")
}
let data = try JSONSerialization.data(withJSONObject: pageJSON)
let decoder = JSONDecoder()
let templateModel = try decoder.decode(TemplateModel.self, from: data)
self.templateModel = templateModel
}
}

View File

@ -14,8 +14,8 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol
var observer: NSKeyValueObservation?
public var templateModel: ListPageTemplateModel?
public override func parsePageJSON() {
parseTemplateJSON()
@objc public override func parsePageJSON() throws {
try parseTemplateJSON()
}
open override var loadObject: MVMCoreLoadObject? {

View File

@ -12,8 +12,8 @@ open class MoleculeStackTemplate: ThreeLayerViewController, TemplateProtocol {
var observer: NSKeyValueObservation?
public var templateModel: StackPageTemplateModel?
public override func parsePageJSON() {
parseTemplateJSON()
public override func parsePageJSON() throws {
try parseTemplateJSON()
}
open override var loadObject: MVMCoreLoadObject? {

View File

@ -11,8 +11,8 @@ import UIKit
@objcMembers open class ThreeLayerTemplate: ThreeLayerViewController, TemplateProtocol {
public var templateModel: ThreeLayerPageTemplateModel?
public override func parsePageJSON() {
parseTemplateJSON()
@objc public override func parsePageJSON() throws {
try parseTemplateJSON()
}
override open func viewDidLoad() {