我尽我所能,但我被困在这里.我想从iPhone相册中导入所有照片.所以我想出了这个ALAssestsLibrary API.
photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: { group in
if group != nil
{
}
}, failureBlock: { error in println("\(error)")})
Run Code Online (Sandbox Code Playgroud)
如何添加这行代码.
group enumerateAssetsUsingBlock:groupEnumerAtion
Run Code Online (Sandbox Code Playgroud)
我尝试添加它但它没有显示任何enumerateAssetsUsingBlock属性.?
这是实际的代码.!在Objective-C中
dispatch_async(dispatch_get_main_queue(), ^
{
@autoreleasepool
{
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror)
{
NSLog(@"error occour =%@", [myerror localizedDescription]);
};
ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if (result!=NULL)
{
if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])
{
[self.g_imageArray addObject:result];
}
}
};
ALAssetsLibraryGroupsEnumerationResultsBlock
libraryGroupsEnumeration = ^(ALAssetsGroup* group, BOOL* stop)
{
if (group == nil)
{
return;
}
if (group!=nil) {
[group enumerateAssetsUsingBlock:groupEnumerAtion];
}
[self updatephotoList];
};
self.library = [[ALAssetsLibrary alloc] init];
[self.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:libraryGroupsEnumeration
failureBlock:failureblock];
}
});
Run Code Online (Sandbox Code Playgroud)
你的enumerationBlock和failureBlock没有正确的类型.例如,枚举块定义为
typealias ALAssetsLibraryGroupsEnumerationResultsBlock = (ALAssetsGroup!, UnsafeMutablePointer<ObjCBool>) -> Void
Run Code Online (Sandbox Code Playgroud)
这意味着参数是一个闭包(ALAssetsGroup!, UnsafeMutablePointer<ObjCBool>)作为参数并返回Void:
{
(group: ALAssetsGroup!, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
// ...
}
Run Code Online (Sandbox Code Playgroud)
所以你的代码应该是这样的:
photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos),
usingBlock: {
(group: ALAssetsGroup!, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
if group != nil {
group.enumerateAssetsUsingBlock({
(asset: ALAsset!, index: Int, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
// ...
})
}
},
failureBlock: {
(myerror: NSError!) -> Void in
println("error occurred: \(myerror.localizedDescription)")
})
Run Code Online (Sandbox Code Playgroud)
由于Swift的"自动类型推断"功能,你可以这样写
photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos),
usingBlock: {
group, stop in
if group != nil {
group.enumerateAssetsUsingBlock({
asset, index, stop in
// ...
})
}
},
failureBlock: {
myerror in
println("error occurred: \(myerror.localizedDescription)")
})
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,第一个版本可能更容易理解.
| 归档时间: |
|
| 查看次数: |
2129 次 |
| 最近记录: |