[ios] Comment créer un tableau de dispatch_block_t dans Swift 2.0?


0 Answers

dispatch_block_t n'est pas hérité de AnyObject, ce n'est pas un objet. Mais vous pouvez modifier votre code et modifier AnyObject à Any comme ceci:

andActionArray : actions as [Any]

Et cela devrait fonctionner pour vous.

UPD:

Votre fonction prend param comme NSArray , vous pouvez simplement lancer votre tableau à ce type, ce code fonctionne dans mon terrain de jeu rapide:

func pickImages() {}
func takePicture() {}
func shootVideo() {}

let actions: [dispatch_block_t] = [{pickImages()},
    {takePicture()},
    {shootVideo()}]
var actionArray: NSArray = actions as NSArray // pass it to the btSimplePopUP init
Question

J'ai un code dans Swift 1.2 pour créer un tableau de dispatch_block_t et ça marche bien. Mais le même code renvoie une erreur dans Swift 2.0.

var menuView: btSimplePopUP!

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

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

Le code ci-dessus fonctionne très bien dans Swift 1.2. Mais dans Swift 2.0, il renvoie l'erreur suivante

[dispatch_block_t] n'est pas convertible en NSArray

Comment puis-je créer un NSArray avec dispatch_block_t?

METTRE À JOUR:

J'ai remplacé le code ci-dessus par le suivant,

let actions: [Any] = [{self.pickImages()},
                    {self.takePicture()},
                    {self.pickVideos()},
                    {self.shootVideo()},
                    {self.recordAudio()},
                    {self.closeView()}]

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

Maintenant, l'erreur précédente est partie. Mais j'obtiens l'erreur suivante dans l'exécution,

erreur fatale: l'élément de tableau ne peut pas être ponté vers Objective-C

Toute aide serait appréciée.




Related