I think this is a known issue. You can work around it by jumping through
another function:
import Foundation
protocol MyProtocol {
init(foo: Int, bar: String)
}
class MyOperation: Operation, MyProtocol {
required init(foo: Int, bar: String) {
super.init()
}
}
private func makeMyProtoHelper<T: MyProtocol>() -> T {
return T(foo: 0, bar: "bar")
}
func makeMyProto<T: MyProtocol>() -> T where T: Operation {
return makeMyProtoHelper()
}
Jordan
> On Nov 18, 2016, at 16:45, Bradley Zeller via swift-users
> <[email protected]> wrote:
>
> I am trying to construct an object that conforms to a protocol `A` and also
> sublclasses object `B`. Protocol `A` requires an initializer that will be
> used to construct it. Xcode will attempt to autocomplete the initializer but
> then ultimately gives the following error:
>
> `error: argument passed to call that takes no arguments`
>
> Here is some sample code:
>
> ```
> protocol MyProtocol {
> init(foo: Int, bar: String)
> }
>
> class MyOperation: Operation, MyProtocol {
> required init(foo: Int, bar: String) {
> super.init()
> }
> }
>
> func makeMyProto<T: MyProtocol>() -> T where T: Operation {
> return T(foo: 0, bar: "bar")
> }
>
> ```
>
> It’s worth noting that this only fails when subclassing `Operation`.
> Subclassing `NSObject` or several other objects seems to work. Hopefully
> there is a way to do this. Ultimately, I just want this generic method to
> construct a thing that is both an `Operation` and conforms to a protocol.
>
> Any help here would be greatly appreciated. Thanks!
> -Bradley
> _______________________________________________
> swift-users mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users