私のアプリをSwift 3に翻訳しています。UICollectionViewのデータソースと代理を設定するクリーンな方法UITableViewCellの内部には、hereと記載されています。次のようにSwift 3ジェネリック:UICollectionViewDatasourceとUITableViewCell内のUICollectionViewの代理人を設定する際の問題
コードは次のとおりです。
func setCollectionViewDataSourceDelegate<D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>
(_ dataSourceDelegate: D, forRow row: Int) {
collectionView.delegate = dataSourceDelegate
collectionView.dataSource = dataSourceDelegate
collectionView.tag = row
collectionView.reloadData()}
をそして、それは述べ、警告がスローされます:私は提案された解決策を受け入れた場合
'protocol<...>' composition syntax is deprecated; join the protocols using '&'
が、それはD: (UICollectionViewDatasource & UICollectionViewDelegate)
呼び出しにD: protocol<UICollectionViewDataSource, UICollectionViewDelegate>
を変更し、代わりにエラーをスローする:
Expected a type name or protocol composition restricting 'D'
私は多くのob自分よりもSwift 3ジェネリックをよりよく理解している人が解決策を提案できれば結構です。
なしアイデア:ちょうどこのようなプロトコルに参加。どうもありがとう! – michalronin