如何在Swift 2.0中将[dispatch_block_t]转换为NSArray? [英] How to convert [dispatch_block_t] to NSArray in Swift 2.0?
本文介绍了如何在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屋!
查看全文