简体   繁体   English

如何在Swift 2.0中将[dispatch_block_t]转换为NSArray?

[英]How to convert [dispatch_block_t] to NSArray in Swift 2.0?

I have created an array of dispatch_block_t like this, 我已经像这样创建了一个dispatch_block_t数组,

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

Now, I want to convert this [dispatch_block_t] to NSArray, so that I can pass this to a function. 现在,我想将此[dispatch_block_t]转换为NSArray,以便将其传递给函数。 I have tried casting this to NSArray. 我试过将其强制转换为NSArray。

let actionsArray: NSArray = actions as NSArray

But I am getting an error. 但是我遇到了错误。

[dispatch_block_t] is not convertible to NSArray [dispatch_block_t]无法转换为NSArray

UPDATE: Full Code, 更新:完整代码,

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")
    }
}

} }

Any help will be appreciated. 任何帮助将不胜感激。

我在以下答案的帮助下将[dispatch_block_t]转换为NSArray: 如何在Swift 2.0中创建一个dispatch_block_t数组?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM