我正在將我的應用程序翻譯成Swift 3.我偶然發現了一個使用乾淨的方式爲UICollectionView設置數據源和委託的問題在一個UITableViewCell裏面,描述爲here。Swift 3泛型:在UITableViewCell中設置UICollectionView的UICollectionView的UICollectionViewDatasource&Delegate問題
的代碼如下:
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: protocol<UICollectionViewDataSource, UICollectionViewDelegate>
成D: (UICollectionViewDatasource & UICollectionViewDelegate)
通話,而是拋出一個錯誤:
Expected a type name or protocol composition restricting 'D'
我會很ob如果有人比我更瞭解Swift 3泛型可以提出解決方案。
不知道爲什麼Xcode的修復建議拋出括號,只需刪除它們固定的問題。非常感謝! – michalronin