Estou utilizando a versão 2.1 do Swift e não está aceitando a classe da forma como vista no curso:
== class Item: NSObject, Equatable, NSCoding { ==
Gera o seguinte erro: Redundant conformance of 'Item' to protocol 'Equatable
Estou utilizando a versão 2.1 do Swift e não está aceitando a classe da forma como vista no curso:
== class Item: NSObject, Equatable, NSCoding { ==
Gera o seguinte erro: Redundant conformance of 'Item' to protocol 'Equatable
Oi Patrik, passei por isso também. Pelo que pude entender o NSObject já faz, na versão 2.X do Swift, o que o Equatable faria. Por tanto voce não precisa implementar o Equatable e, além disso, ao invés de declarar a função fora da classe ==, voce declara a função isEqual, dentro da classe. Por exemplo:
//
// Item.swift
// happy-food
//
// Created by Alishan Tesch on 25/10/15.
// Copyright © 2015 Alishan Tesch. All rights reserved.
//
import Foundation
class Item: NSObject, /*Equatable,*/ NSCoding {
let name:String
let calories:Double
init(name:String, calories:Double) {
self.name = name
self.calories = calories
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as! String
self.calories = aDecoder.decodeDoubleForKey("calories")
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "name")
aCoder.encodeDouble(calories, forKey: "calories")
}
override func isEqual(object: AnyObject?) -> Bool {
if let rhs = object as? Item {
return name == rhs.name && calories == rhs.calories
}
return false
}
}
/*func ==(first:Item, second:Item) -> Bool {
return first.name == second.name && first.calories == second.calories
}*/
Comentei os códigos que precisam ser removidos, e adicionei os novos. Acho que da para entender direitinho.
Espero ter ajudado! Abraço!
Por favor, desconsidere os blocos de código que ainda não viu no curso. Só considere o que já viu e o isEqual. Beleza? Na pressa eu copiei a classe inteira, perdão.
Atenciosamente,