Inout не будет работать с Subclass
Вот пример
class SuperClass {
var name = "Prashant"
}
class TestObject:SuperClass {
}
func updateTemp ( object:inout SuperClass) {
object.name = "P.T"
}
Теперь, когда вы создаете TestObject
объект, который является подклассом SuperClass
, он не позволит это сделать.
var obj = TestObject()
self.updateTemp(object: &obj) // Cannot pass immutable value as inout argument: implicit conversion from 'TestObject' to 'SuperClass' requires a temporary
print(obj.name)
Как это исправить
Три способа
1) создать объект с var obj:SuperClass = TestObject()
2) На самом деле это не обязательно должно быть inout
, поскольку класс является ссылочным типом
3) Создайте функцию Generic, как она (Generic - это здорово !!)
func updateTemp<T:SuperClass> ( object:inout T) {
object.name = "P.T"
}
Надеюсь, это кому-нибудь пригодится