我在翻译我的应用程序斯威夫特3.我在一个问题,用设置数据源和委托一个UITableViewCell内UICollectionView,描述了一个干净的方式跌跌撞撞的过程在这里.
代码如下:
func setCollectionViewDataSourceDelegate<D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>
(_ dataSourceDelegate: D, forRow row: Int) {
collectionView.delegate = dataSourceDelegate
collectionView.dataSource = dataSourceDelegate
collectionView.tag = row
collectionView.reloadData()}
Run Code Online (Sandbox Code Playgroud)
它会发出警告,说:
'protocol <...>'组合语法已弃用; 使用'&'加入协议
当我接受建议的解决方案时,它会更改D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>为一个D: (UICollectionViewDatasource & UICollectionViewDelegate)调用,而是抛出一个错误:
预期限制'D'的类型名称或协议组成
如果对Swift 3仿制药有更好理解的人可以提出解决方案,我将非常感激.
我正在为我的应用程序开发一个共享扩展程序,以便能够使用它直接从库中共享图像。我有一个视图控制器和布局设置,但我正在努力让所选图像显示在UIImageView视图控制器内部。
目前,我的getImage()情况如下:
func getImage() {
if let inputItem = extensionContext!.inputItems.first as? NSExtensionItem {
if let itemProvider = inputItem.attachments?.first as? NSItemProvider {
itemProvider.loadItem(forTypeIdentifier: kUTTypeJPEG as String) { [unowned self] (imageData, error) in
if let item = imageData as? Data {
self.imageView.image = UIImage(data: item)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
...但图像未加载。我在这里做错了什么?