簡體   English   中英

如何在Swift 2.0中將[dispatch_block_t]轉換為NSArray?

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

我已經像這樣創建了一個dispatch_block_t數組,

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

現在,我想將此[dispatch_block_t]轉換為NSArray,以便將其傳遞給函數。 我試過將其強制轉換為NSArray。

let actionsArray: NSArray = actions as NSArray

但是我遇到了錯誤。

[dispatch_block_t]無法轉換為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: 如何在Swift 2.0中創建一個dispatch_block_t數組?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM