如何在一个 ViewController 中创建实现多协议?
How to create implement multi protocol in one ViewController?
我想创建一个具有不同活动的协议。我的参考是 Java Android 上的接口,我们可以创建一个变量作为接口,然后像在 class 中实现的那样进行初始化。那么,swift 代码上的接口等效项是什么?
//Android Interface
private OnValueChanged joinDay, birthDay;
//initialize
joinDay = new OnValueChanged(value -> {
//somecode
});
birthday = new OnValueChanged(value -> {
//somecode
});
interface OnValueChanged{
void didChanged(Date value)
}
//END OF ANDROID INTERFACE
//SWIFT PROTOCOL
class myClass : OnValueChanged{
func didChanged(Int value){
//somecode
}
}
protocol OnValueChanged{
func didChanged(Int value)
}
//END OF SWIFT PROTOCOL
我想要的是创建一个变量或类似的东西,它可以为相同的 Class 实现不同的代码,就像在 Android 端。
如何在 swift 中做到这一点?
谢谢
在 Swift 中不需要单独的类型。您的 Java 接口可以用 Swift 中的 闭包 表示。具体来说,它是一个 (Int) -> Void
.
类型的闭包
您可以在 Swift 中这样声明 joinDay
和 birthday
:
var joinDay: ((Int) -> Void)?
var birthday: ((Int) -> Void)?
要分配 "implementation",请执行:
joinDay = { value in
// do something with the parameter "value"
print(value)
}
而在 Swift 中调用 joinDay.didChanged(someValue)
的等价物是:
joinDay?(someValue)
有关如何使用闭包的详细信息,请参阅 Swift 指南中的 Closures。
我想创建一个具有不同活动的协议。我的参考是 Java Android 上的接口,我们可以创建一个变量作为接口,然后像在 class 中实现的那样进行初始化。那么,swift 代码上的接口等效项是什么?
//Android Interface
private OnValueChanged joinDay, birthDay;
//initialize
joinDay = new OnValueChanged(value -> {
//somecode
});
birthday = new OnValueChanged(value -> {
//somecode
});
interface OnValueChanged{
void didChanged(Date value)
}
//END OF ANDROID INTERFACE
//SWIFT PROTOCOL
class myClass : OnValueChanged{
func didChanged(Int value){
//somecode
}
}
protocol OnValueChanged{
func didChanged(Int value)
}
//END OF SWIFT PROTOCOL
我想要的是创建一个变量或类似的东西,它可以为相同的 Class 实现不同的代码,就像在 Android 端。
如何在 swift 中做到这一点?
谢谢
在 Swift 中不需要单独的类型。您的 Java 接口可以用 Swift 中的 闭包 表示。具体来说,它是一个 (Int) -> Void
.
您可以在 Swift 中这样声明 joinDay
和 birthday
:
var joinDay: ((Int) -> Void)?
var birthday: ((Int) -> Void)?
要分配 "implementation",请执行:
joinDay = { value in
// do something with the parameter "value"
print(value)
}
而在 Swift 中调用 joinDay.didChanged(someValue)
的等价物是:
joinDay?(someValue)
有关如何使用闭包的详细信息,请参阅 Swift 指南中的 Closures。