我的应用程序中有一个loadAlbums
方法,该方法使用AssetsLibrary
的单例实例加载资产。到目前为止,这是我的代码:
func loadAlbums(){
let library = IAAssetsLibraryDefaultInstance
library.enumerateGroupsWithTypes(ALAssetsGroupAll as ALAssetsGroupType,
usingBlock: {(group:ALAssetsGroup, stop:Bool) in
if group {
self.albums.append(group)
}
else {
self.tableView.performSelectorOnMainThread("reloadData", withObject: nil, waitUntilDone: true)
}
}, failureBlock: { (error:NSError) in println("Problem loading albums: \(error)") })
}
我遇到的错误是在
usingBlock
行的开头。编译器说:ALAssetsGroup! is not a subtype of 'ALAssetsGroup'
这是什么意思?我该如何解决?
最佳答案
您的代码块期望ALAssetsGroup
参数使用group
,但是正在传递类型为ALAssetsGroup!
的参数(一个隐式解包的可选参数)。
最大的区别是,您要传递的值可以为nil,但是期望的类型不能为nil
只需将您的签名更改为
{(group:ALAssetsGroup!, stop:Bool) in
…
}
您的代码已经在检查group是否为nil,因此这应该是您需要进行的唯一更改
关于closures - ALAssetsGroup!不是“ALAssetsGroup”的子类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24125317/