ios, использующая блоки для библиотеки активов

#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