我尝试使用enumerateGroupsWithTypes
类的ALAssetsLibrary
方法,但第一个参数出错。
func enumerateGroupsWithTypes(types: ALAssetsGroupType,
usingBlock enumerationBlock: ALAssetsLibraryGroupsEnumerationResultsBlock!,
failureBlock: ALAssetsLibraryAccessFailureBlock!)
assetLib.enumerateGroupsWithTypes(ALAssetsGroupAll, usingBlock: success, failureBlock: fail)
但是我收到编译错误'CUnsignedInt' is not convertible to 'ALAssetsGroupType'
基于我在互联网和我自己的测试中发现的内容,我也尝试了
assetLib.enumerateGroupsWithTypes(ALAssetsGroupAll as ALAssetsGroupType, usingBlock: success, failureBlock: fail)
结果是编译错误Cannot convert the expression's type 'Void' to type 'ALAssetsGroupType'
assetLib.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAll), usingBlock: success, failureBlock: fail)
结果是运行时错误EXC_BAD_ACCESS
和XCode崩溃。
答案 0 :(得分:1)
看起来正确的方法是使用ALAssetsGroupType
的初始值设定项来创建新的ALAssetsGroupType
。以下应该有效:
assetLib.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAll), usingBlock: success, failureBlock: fail)
答案 1 :(得分:-1)
这似乎是编译:
虽然,它未经测试,因为我不确切知道它返回allZeros
的内容。
它可能会返回0x00000
而不是您需要的0xFFFFFF
。
将来可能仍然是一个很好的参考。
let assetLib = ALAssetsLibrary()
assetLib.enumerateGroupsWithTypes(ALAssetsGroupType.allZeros, usingBlock: { (results, stop) in
println(results)
}, failureBlock: { (fail) in
println(fail)
})
修改强>
那么,如果您执行以下操作会发生什么?
assetLib.enumerateGroupsWithTypes(0xFFFFFFFF, usingBlock: ...)
我得到以下内容:
(ALAssetsGroup - Name:Instagram, Type:Album, Assets count:46, )
(ALAssetsGroup - Name:Snapchat, Type:Album, Assets count:0, )
(ALAssetsGroup - Name:Camera Roll, Type:Saved Photos, Assets count:681, )
(nil, )
这可能是像杰克吴所提到的那样,他们可能会使用enum
而不是NS_ENUM
并且翻译人员破了。
暂时这样做可能是一种解决方法。
资产类型
识别资产类型的常量。
enum {
ALAssetsGroupLibrary = (1 << 0),
ALAssetsGroupAlbum = (1 << 1),
ALAssetsGroupEvent = (1 << 2),
ALAssetsGroupFaces = (1 << 3),
ALAssetsGroupSavedPhotos = (1 << 4),
ALAssetsGroupPhotoStream = (1 << 5),
ALAssetsGroupAll = 0xFFFFFFFF,
};