- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我尽力了,但我被困在这里。我想导入 iPhone 相册中的所有照片。所以我想出了这个 ALAssestsLibrary API。
photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: { group in
if group != nil
{
}
}, failureBlock: { error in println("\(error)")})
如何添加这行代码。
group enumerateAssetsUsingBlock:groupEnumerAtion
我尝试添加它,但它没有显示任何 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];
}
});
最佳答案
你的 enumerationBlock
和 failureBlock
没有正确的类型。比如枚举 block 定义为
typealias ALAssetsLibraryGroupsEnumerationResultsBlock = (ALAssetsGroup!, UnsafeMutablePointer<ObjCBool>) -> Void
这意味着参数是一个采用 (ALAssetsGroup!, UnsafeMutablePointer<ObjCBool>)
的闭包作为参数并返回 Void
:
{
(group: ALAssetsGroup!, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
// ...
}
所以你的代码应该是这样的:
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)")
})
由于 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)")
})
但在这种情况下,第一个版本可能更容易理解。
关于ios - 如何在 Swift 中枚举 ALAssetsGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24968996/
我有我的 ALAssetsGroup 对象。 例如: ALAssetsGroup *_someGroup. 但用户可以将应用程序发送到后台并删除此相册。 是否检查 assetsGroup 是否正确?
我正在尝试获取所有专辑的名称。这是我的工作。 方法[group valueForKey:ALAssetsGroupPropertyName]崩溃 ALAssetsLibrary *assetsLibr
我正在使用 AssetsLibrary 框架将 Assets 保存到特定相册 (ALAssetsGroup)。 由于我经常使用 ALAssetsGroup(用于我想保存 Assets 的专辑),我认为
我使用 IOS AssetsLibrary 从我的应用程序创建了“相册”。 阅读 ALAssetsLibrary、ALAssetsGroup 和 ALAsset 文档,我已经看到了“addAsset”
我目前正在使用一些非常标准的代码来枚举组中的 Assets 。除了现在我有一个新错误 *** Terminating app due to uncaught exception 'NSRangeExc
我可以通过 ALAssetsGroupAlbum 枚举并创建一个按专辑名称排序的 NSMutableArray,如下所示,没有问题。但是,我真正想做的是按照 iPhone 照片应用程序的相同方式对相册
我正在使用 ALAssetsGroup 来显示照片和视频。 ALAssetsGroup 有一个方法叫做 - (void)setAssetsFilter:(ALAssetsFilter *)filter
我尽力了,但我被困在这里。我想导入 iPhone 相册中的所有照片。所以我想出了这个 ALAssestsLibrary API。 photoLibrary.enumerateGroupsWithTy
我的代码在 OS 4.3 上运行但是对于 5 我收到了关于 ALAssetsGroup 的警告对于 ALAssetsGroup 我没有得到它的任何方法所以我没有找到枚举的实例看代码 void (^a
我的应用程序中有一个 loadAlbums 方法,它使用 AssetsLibrary 的单例实例加载资源。这是到目前为止我的代码: func loadAlbums(){ let library
我有一个应用程序可以向用户显示相册列表,以便他们可以选择其中的照片并将它们上传到服务器。这一切都很好而且很可靠,但是一位将他们的 Mac 和 iPhoto 图库升级到照片的人报告说,当他们现在使用该应
我一直在遵循这个指南: http://www.icodeblog.com/2010/07/08/asset-libraries-and-blocks-in-ios-4/ 但是,此示例使用与相册对应的所
我在 SO 上看到几个人已经成功地使用了这段代码。但是我得到了不兼容的 block 指针错误: 不兼容的 block 指针类型正在初始化 void(^)(struct ALAssetsGroup *,
我是一名优秀的程序员,十分优秀!