2015-03-12 2 views
0

Что такое эквивалент Swift для следующего выражения?Быстрый эквивалент для UIImage с CGImage?

@property (strong, nonatomic) NSMutableArray *assets; 

cell.imageView.image = [UIImage imageWithCGImage:[[self.assets objectAtIndex:indexPath.row] thumbnail]]; 

Я пробовал:

private var assets: [AnyObject] 

cell.imageView.image = UIImage(CGImage: self.assets[indexPath.row].thumbnail()) 

Но это дает ошибку:

Missing argument for parameter 'inBundle' in call 

Edit: self.assets имеет объекты из следующего выражения:

ALAssetsGroupEnumerationResultsBlock assetsEnumerationBlock = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 

     if (result) { 
      [self.assets insertObject:result atIndex:0]; 
     } 

    }; 
+0

Что представляют собой объекты в 'self.assets'? – matt

+0

@matt Посмотреть мое редактирование. Надеюсь, это поможет. – confile

ответ

2

Объявите свойство как это:

var assets: [ALAsset] 

, а затем, в самом коде некоторого метода:

let thumb = self.assets[indexPath.row].thumbnail().takeUnretainedValue() 
cell.imageView.image = UIImage(CGImage:thumb) 

В декларации об имуществе, я открывал компилятор, что это действительно массив из. В противном случае он не знает, что thumbnail() - это реальный метод или что он возвращает.

В первой строке фактического кода я имею дело с тем, что в инфраструктуре AssetLibrary нет информации управления памятью; вы не можете перейти в Swift, если вы не решили это как-то.

Итак, на следующей строке у нас есть реальный CGImage и вы можете просто использовать его.

+0

Когда мне нужно использовать '' takeUnretainedValue() '' или '' takeRetainedValue() ''? – confile

+0

Этот вопрос связан: http://stackoverflow.com/questions/29048826/takeunretainedvalue-vs-takeretainedvalue – confile

Смежные вопросы