Mor*_*iak 7 ios alassetslibrary swift
我尝试使用类的enumerateGroupsWithTypes方法,ALAssetsLibrary但我得到第一个参数的错误.
func enumerateGroupsWithTypes(types: ALAssetsGroupType,
usingBlock enumerationBlock: ALAssetsLibraryGroupsEnumerationResultsBlock!,
failureBlock: ALAssetsLibraryAccessFailureBlock!)
Run Code Online (Sandbox Code Playgroud)
assetLib.enumerateGroupsWithTypes(ALAssetsGroupAll, usingBlock: success, failureBlock: fail)
Run Code Online (Sandbox Code Playgroud)
但是我收到编译错误 'CUnsignedInt' is not convertible to 'ALAssetsGroupType'
基于我在互联网上发现的和我自己的测试,我也尝试过
assetLib.enumerateGroupsWithTypes(ALAssetsGroupAll as ALAssetsGroupType, usingBlock: success, failureBlock: fail)
Run Code Online (Sandbox Code Playgroud)
结果是编译错误 Cannot convert the expression's type 'Void' to type 'ALAssetsGroupType'
assetLib.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAll), usingBlock: success, failureBlock: fail)
Run Code Online (Sandbox Code Playgroud)
结果是运行时错误EXC_BAD_ACCESS和XCode崩溃.
fuz*_*uzz -1
这似乎可以编译:
尽管如此,它还没有经过测试,因为我不知道它到底返回什么allZeros。
它可能会返回0x00000与您需要的相反的内容,即0xFFFFFF.
对于未来的人们来说仍然是一个很好的参考。
let assetLib = ALAssetsLibrary()
assetLib.enumerateGroupsWithTypes(ALAssetsGroupType.allZeros, usingBlock: { (results, stop) in
println(results)
}, failureBlock: { (fail) in
println(fail)
})
Run Code Online (Sandbox Code Playgroud)
编辑:
那么,如果您执行以下操作会发生什么?
assetLib.enumerateGroupsWithTypes(0xFFFFFFFF, usingBlock: ...)
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
(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, )
Run Code Online (Sandbox Code Playgroud)
这可能是一个像吴杰克提到的错误,他们可能使用过enum,但没有使用过NS_ENUM,并且翻译器坏了。
这样做可能是暂时的解决方法。
资产类型
用于识别资产类型的常量。
enum {
ALAssetsGroupLibrary = (1 << 0),
ALAssetsGroupAlbum = (1 << 1),
ALAssetsGroupEvent = (1 << 2),
ALAssetsGroupFaces = (1 << 3),
ALAssetsGroupSavedPhotos = (1 << 4),
ALAssetsGroupPhotoStream = (1 << 5),
ALAssetsGroupAll = 0xFFFFFFFF,
};
Run Code Online (Sandbox Code Playgroud)