Ich frage mich, ob es eine gute Idee ist, CRUD-Methoden in benutzerdefinierte Swift-Klassen aufzunehmen, oder geht es ihnen besser in einer separaten Klasse?CRUD-Methoden in benutzerdefinierten Swift-Klassen
Zum Beispiel habe ich eine Klasse namens User.swift:
class User {
var firstName: String
var lastName: String
var id: int
}
Nun wäre es in Ordnung, die get zu schließen und Methoden hier zu schaffen? Diese Methoden werden API-Aufrufe über Alamofire machen:
class User {
var firstName: String
var lastName: String
var id: int
static func add(user: User) -> User {
let parameters = ["firstName": user.FirstName , "lastName": user.LastName]
return sendRequest(.POST, url: "example.com/users", parameters: parameters)
}
static func getById(userId: Int) -> User {
return sendRequest(.GET, url: "example.com/users/\(userId)")
}
}
Sollten diese Methoden werden in einer separaten Klasse, wie in einer ApiHelper Klasse?
Meine Anwendung überträgt das User-Objekt in Arrays und Wörterbüchern an mehreren Stellen, also frage ich mich, ob es gut ist, es nur mit den Eigenschaften sauber zu halten.
Danke für diese nützliche Informationen. Also, wenn ich den ActiveRecord-Ansatz befolge, hat das irgendwelche Auswirkungen auf die Performance? Wenn ich beispielsweise ein Array von Benutzern erstelle, hat jeder Benutzer in diesem Array auch Verweise auf die Protokollmethoden. Oder ist das nicht eine große Sache? – Prabhu
@ Prabhu Nein, es gibt keinen Hinweis auf das Protokoll. Durch die Verwendung eines Protokolls und einer Erweiterung entstehen keine Auswirkungen auf die Leistung. Dieser einfache Ansatz hat jedoch einige Einschränkungen, beispielsweise seine _synchronous_. Eine synchrone API kann für Server geeignet sein, die auf eine lokale Datenbank zugreifen. Es ist nicht besonders nützlich für Web-Service-APIs. Hier würden Sie es asynchron machen und auch eine Möglichkeit zur Stornierung bieten. Es ist ein sehr weites Thema, daher ist dieser obige Ausschnitt nur ein Ausgangspunkt für weitere Ideen. Vielleicht wären in Ihrem Fall Core Data geeignet. – CouchDeveloper