我的应用程序中有一个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'
这是什么意思?我该怎么解决这个问题?
发布于 2014-06-09 17:23:19
您的块需要一个ALAssetsGroup作为group参数,但是它正在被传递一个带有ALAssetsGroup!类型的参数(一个隐式未包装的可选参数)。
最大的区别是,您要传递的值可以是零,但是您期望的类型不能为零
只需将签名更改为
{(group:ALAssetsGroup!, stop:Bool) in
…
}您的代码已经在检查组是否为零,因此这应该是您需要进行的唯一更改。
https://stackoverflow.com/questions/24125317
复制相似问题