与CGImage的UIImage等效的Swift?

时间:2015-03-12 20:27:26

标签: ios objective-c iphone swift uiimage

以下表达式的Swift等价物是什么?

@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

编辑:self.assets包含以下表达式中的对象:

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

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

    };

1 个答案:

答案 0 :(得分:2)

声明属性如下:

var assets: [ALAsset]

然后,在某些方法的实际代码中:

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

在属性声明中,我向编译器揭示了这是一个真正的数组。否则,它不知道thumbnail()是一个真正的方法或它返回什么样的东西。

在实际代码的第一行,我处理的是AssetLibrary框架没有内存管理信息的事实;除非你以某种方式解决这个问题,否则你无法继续使用Swift。

所以,到下一行我们已经有了一个真正的CGImage,可以继续使用它。