我的应用中有一个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'
这是什么意思?我该如何解决这个问题?
答案 0 :(得分:1)
您的块期望ALAssetsGroup
参数group
,但它传递了一个类型为ALAssetsGroup!
的参数(隐式解包的可选项)。
最大的区别在于您传递的值可能为零,但您预期的类型不能为零
只需将您的签名更改为
{(group:ALAssetsGroup!, stop:Bool) in
…
}
您的代码已经在检查组是否为零,因此这应该是您需要进行的唯一更改