Data la classe seguente, come possono essere confrontati tutti i valori in due istanze l'uno con l'altro?Confronta due istanze di un oggetto in Swift
// Client Object
//
class PLClient {
var name = String()
var id = String()
var email = String()
var mobile = String()
var companyId = String()
var companyName = String()
convenience init (copyFrom: PLClient) {
self.init()
self.name = copyFrom.name
self.email = copyFrom.email
self.mobile = copyFrom.mobile
self.companyId = copyFrom.companyId
self.companyName = copyFrom.companyName
}
}
var clientOne = PLClient()
var clientTwo = PLClient(copyFrom: clientOne)
if clientOne == clientTwo { // Binary operator "==" cannot be applied to two PLClient operands
println("No changes made")
} else {
println("Changes made. Updating server.")
}
Il caso d'uso per questo è in un'applicazione che presenta i dati da un server. Una volta che i dati vengono convertiti in un oggetto, viene creata una copia dell'oggetto. L'utente è in grado di modificare vari campi ecc. Che cambia i valori in uno degli oggetti.
L'oggetto principale, che potrebbe essere stato aggiornato, deve essere confrontato con la copia di tale oggetto. Se gli oggetti sono uguali (i valori di tutte le proprietà sono uguali), non succede nulla. Se uno qualsiasi dei valori non è uguale, l'applicazione invia le modifiche al server.
Come mostrato nell'esempio di codice, l'operatore ==
non viene accettato perché non viene specificato un valore. L'utilizzo di ===
non consente di ottenere il risultato desiderato poiché queste saranno sempre due istanze separate.
sovraccarico '==' per la tua classe. – dasdom
Conformandosi a [Equatable] (https://developer.apple.com/library/ios/documentation/General/Reference/SwiftStandardLibraryReference/Equatable.html) – Alladinian