以下oc代码用swift3应该怎么写?

从oc代码迁移到swift3,感觉进了大坑。。。。

用的是TZImagePickerController这个插件,看了下网上的用例几乎都是oc的用例。它的文档里有这么一个属性用来初始化

@property (nonatomic, copy) void (^didFinishPickingPhotosHandle)(NSArray<UIImage *> *photos,NSArray *assets,BOOL isSelectOriginalPhoto);

然后我用oc调用的示例是这样的

// 你可以通过block或者代理,来得到用户选择的照片.
    [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
        //blablabla..
    }];

现在要用swift去做这件事,我的写法->

imagePick?.didFinishPickingPhotosHandle({
        (photos:[UIImage]!,assets:[AnyObject]!,isSelectOriginalPhoto:Bool)->Void in
        
    })

结果它一直在报这个错 ->

Cannot convert value of type '([UIImage]!, [AnyObject]!, Bool) -> Void' to expected argument type '([UIImage]?, [Any]?, Bool)'

我到底错在哪?能否求个解,已经困扰了一天半。。。

上图

图片描述

图片描述

回复
阅读 2k
1 个回答

用block

imagePick.didFinishPickingPhotosHandle = {(images: [UIImage]?, assets:[Any]?, isSelectOriginalPhoto: Bool) in
    print(images)
}

用代理

if let imagePick = TZImagePickerController.init(maxImagesCount: 5, delegate: nil) {
    imagePick.pickerDelegate = self
}
extension ViewController: TZImagePickerControllerDelegate {
    
    func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) {
        print(photos)
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏