如何在Swift 2.0中将[dispatch_block_t]转换为NSArray? [英] How to convert [dispatch_block_t] to NSArray in Swift 2.0?

查看:97
本文介绍了如何在Swift 2.0中将[dispatch_block_t]转换为NSArray?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经像这样创建了一个dispatch_block_t数组,

I have created an array of dispatch_block_t like this,

let actions: [dispatch_block_t] = [
    {self.pickImages()},
    {self.takePicture()}]

现在,我想将此[dispatch_block_t]转换为NSArray,以便可以将其传递给函数.我尝试将其强制转换为NSArray.

Now, I want to convert this [dispatch_block_t] to NSArray, so that I can pass this to a function. I have tried casting this to NSArray.

let actionsArray: NSArray = actions as NSArray

但是我遇到一个错误.

[dispatch_block_t]无法转换为NSArray

[dispatch_block_t] is not convertible to NSArray

更新:完整代码

import UIKit
import Foundation
import MobileCoreServices
import MediaPlayer

class AttachFilesViewController: UIViewController, UINavigationBarDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, MultiImagePickerControllerDelegate, MPMediaPickerControllerDelegate, UITableViewDataSource, UITableViewDelegate {

var tableView: UITableView = UITableView()

var imgPkr: MultiImagePickerController!     //For picking image(s)
var cameraPkr: UIImagePickerController = UIImagePickerController()    //For taking a picture

var menuView: btSimplePopUP!

var rightBarButtonItem = UIBarButtonItem()

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor.whiteColor()

    //Creating Right bar button item
    let buttonRight = UIButton(type: UIButtonType.Custom)
    buttonRight.frame = CGRectMake(0, 0, 30, 30)
    buttonRight.setImage(UIImage(named:"add.png"), forState: UIControlState.Normal)
    buttonRight.addTarget(self, action: "openMenu:", forControlEvents: UIControlEvents.TouchUpInside)
    rightBarButtonItem = UIBarButtonItem(customView: buttonRight)

    tableView.delegate = self
    tableView.dataSource = self

    self.view.addSubview(tableView)
}

func openMenu(sender: UIButton){
    if(menuView == nil){
        let imgs = [UIImage(named: "pickImage.png")!,
            UIImage(named: "takePicture.png")!,
            UIImage(named: "pickVideo.png")!,
            UIImage(named: "shootVideo.png")!,
            UIImage(named: "recordAudio.png")!,
            UIImage(named: "quit.png")!] as NSArray

        let titles = ["Images",
            "Capture",
            "Videos",
            "Shoot",
            "Record",
            "Cancel"] as NSArray

                let actions: [dispatch_block_t] = [
                    {self.pickImages()},
                    {self.takePicture()},]

                let actionsArray = NSArray(array: actions)

                menuView = btSimplePopUP(itemImage: imgs as [AnyObject],
                    andTitles: titles as [AnyObject],
                    andActionArray:  actionsArray as [AnyObject],
        addToViewController: self)

                            self.view.addSubview(menuView)
            menuView.show(BTPopUpAnimation.UPAnimateWithFade)
            }else{
        if(!menuView.isDescendantOfView(self.view)){                
            self.view.addSubview(menuView)
            menuView.show(BTPopUpAnimation.UPAnimateWithFade)
        }
    }
}

//For picking image(s) from gallery
func pickImages(){
    videoPkr = nil
    globalStruct.groupType = true
    imgPkr = MultiImagePickerController()
    imgPkr.pickerDelegate = self
    self.navigationController!.presentViewController(imgPkr, animated: true) {}
}

//For taking a picture with camera
func takePicture(){
    imgPkr = nil
    videoPkr = nil
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){
        self.cameraPkr = UIImagePickerController()
        self.cameraPkr.delegate = self  //UIImagePicker delegate
        self.cameraPkr.allowsEditing = false
        self.cameraPkr.sourceType = .Camera
        self.cameraPkr.cameraCaptureMode = .Photo
        self.cameraPkr.modalPresentationStyle = .FullScreen
        self.navigationController!.presentViewController(self.cameraPkr, animated: true, completion: nil)
    }else{
        SCLAlertView().showError("No Camera!!", subTitle: "Sorry.. Your device does not have a camera!", closeButtonTitle: "Okay")
    }
}

}

任何帮助将不胜感激.

推荐答案

借助以下答案,我将[dispatch_block_t]转换为NSArray:

I converted [dispatch_block_t] to NSArray with the help of the following answer, How to create an array of dispatch_block_t in Swift 2.0?

这篇关于如何在Swift 2.0中将[dispatch_block_t]转换为NSArray?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆