2016-09-24 5 views
0

Ich denke, das sollte ziemlich einfach sein, aber ich kann es nicht herausfinden, weil ich Generika oder enums mit Argumenten nicht fest im Griff habe.Realm feinkörnige Benachrichtigungen Swift 3-Syntax

Vorher hatte ich eine Erweiterung UITableView für Feinkorn-Benachrichtigungen der Handhabung

func updateTableWithChanges<AnyType>(changes:RealmCollectionChange<Results<AnyType>>) { 
    switch changes { 
    case .Initial: 
     self.reloadData() 
    case .Update(let results, let deletions, let insertions, let modifications): 
     beginUpdates() 
     // DO STUFF 
     endUpdates() 
    case .Error(let error): 
     print(error) 
    } 
} 

so ausgesehen Da die Migration auf Swift 3 die Syntax geändert hat, und ich kann nicht herausfinden, was in der gehen sollte die Klammer des Falles. Die neue Syntax ist

switch changes { 
    case .initial(T): 
     break 
    case .update(T, deletions: [Int], insertions: [Int], modifications: [Int]): 
     break 
    case .error(Error): 
     break 
    } 

Was die Argumente mit den ENUM-Fälle sind (insbesondere T), und wie erreiche ich sie jetzt?

Antwort

1

Dies ist anscheinend, wie es jetzt getan werden muss. Ich habe die Dokumentation von Swift 3 durchforstet und konnte sie beheben.

switch changes { 
    case .initial(_): 
     reloadData() 
    case let .update(_, deletions, insertions, modifications): 
     beginUpdates() 
     // DO STUFF 
     endUpdates() 
    case let .error(error): 
     print(error) 
} 
+1

Wenn Sie nicht die zugehörigen Werte in einem Enum Fall verwenden, sollten Sie noch in der Lage sein, die Klammern in Swift 3 auszulassen ('Fall .initial:', 'Fall .update', etc). – AustinZ