Worth mentioning that @objc protocols do conform to themselves as long as they do not have static methods or initializer requirements. However this may be too heavy-handed if a simple overload can do the trick.
Slava > On Mar 9, 2017, at 1:10 PM, Guillaume Lessard via swift-users > <swift-users@swift.org> wrote: > > >> On Mar 9, 2017, at 12:46, Edward Connell via swift-users >> <swift-users@swift.org> wrote: >> >> // Everything compiles fine until this >> someFunc(items: items) > > This is a frequent pain point: protocol existentials cannot stand in for the > protocol they represent. > Your function wants a concrete type that conforms to ItemProtocol, but an > array of disparate types which happen to separately conform to ItemProtocol > does not do that. > > You will need to overload thusly: > > func someFunc(items: [ItemProtocol]) { > for item in items { > print(item.message) > } > } > > until, someday, this pain point is resolved. > > Cheers, > Guillaume Lessard > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users