Biorąc pod uwagę następujące klasy, w jaki sposób można wszystkie wartości w dwóch przypadkach być porównywane ze sobą?Porównaj dwie instancje obiektu w 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.")
}
W tym przypadku przypadkiem jest aplikacja, która prezentuje dane z serwera. Po przekształceniu danych w obiekt tworzona jest kopia obiektu. Użytkownik może edytować różne pola itp., Które zmieniają wartości w jednym z obiektów.
Głównym celem, który może być aktualizowany, musi być porównana do kopii tego obiektu. Jeśli obiekty są równe (wartości wszystkich właściwości są takie same), nic się nie dzieje. Jeśli którakolwiek z wartości nie jest równa, aplikacja przesyła zmiany na serwer.
, jak pokazano w przykładzie kodu operator ==
nie jest akceptowana, ponieważ wartość ta nie jest określona. Użycie ===
nie przyniesie pożądanego rezultatu, ponieważ zawsze będą to dwie oddzielne instancje.
przeciążeniem '==' dla twojej klasy. – dasdom
Przez zgodne [Equatable] (https://developer.apple.com/library/ios/documentation/General/Reference/SwiftStandardLibraryReference/Equatable.html) – Alladinian