#objective-c #ios #objective-c-blocks #alassetslibrary
#objective-c #iOS #objective-c-блоки #alassetslibrary
Вопрос:
Мне нужно использовать библиотеку активов: я нашел фрагменты, подобные этому:
[library enumerateGroupsWithTypes:ALAssetsGroupAlbum
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");
}];
и компилятор выдает мне ошибку, например, не распознает блок ^.
есть ли настройка или что-то, чтобы включить блоки в проекте? заранее спасибо
вот полная ошибка / код: https://skitch.com/ghiboz/grpyc/xcode
Paolo
Комментарии:
1. как выглядит объявление assetGroupEnumerator в вашем коде?
Ответ №1:
Мой первоначальный ответ — похоже, вам нужно добавить в свой проект фреймворк AssetsLibrary.
Мой новый ответ — для ваших перечислений активов избавьтесь от ключевого слова «struct» в объявлениях блоков. Они вам не нужны.
например
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop){
и
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset * result, NSUInteger index, BOOL * stop)
Комментарии:
1. вы добавили
#import <AssetsLibrary/AssetsLibrary.h>
в начало файла, где вы используете блок?2. Ознакомьтесь с моим ответом выше. Вам нужно избавиться от ключевого слова «struct» в объявлениях ваших блоков.
Ответ №2:
Используете ли вы GCC вместо Clang? Во многих случаях возникают проблемы с распознаванием подписей блоков.
Комментарии:
1. Я имею в виду, что у GCC есть проблемы, вы должны использовать Clang. В ваших целевых настройках вы увидите «Компилятор для C / C / Objective-C» Измените это на Clang, если оно еще не установлено как таковое.
2. skitch.com/ghiboz/gryyr/xcode У меня есть это, и в моих настройках есть только APPLE LLVM И LLVM GCC 4.2
3. Тогда проблема заключается в другом. покажите, что такое assetGroupEnumerator
4. посмотрите первый пост, я загрузил снимок с кодом: это выглядит так: icodeblog.com/2010/07/08/asset-libraries-and-blocks-in-ios-4