2017-10-18 1 views
1

J'ai initialisé une variable avec var timeTableTemp: [[Any] ] = [], mais impossible d'exploiter le résultat quand je remplirai avec:iOs: (Swift 3) J'ai initialisé avec var variable: [[Any]] = [], mais un message d'erreur [type 'Any' n'a aucun membre indice]

timeTableTemp[i][j] = [Date1, Date2] 

lorsque je tente d'exploiter le résultat avec:

let slot = self.timeTableTemp[i][j] 
print(slot[1]) 

J'ai ce message d'erreur: « type ' Tout 'n'a pas de membres en indice'

Merci d'avance.

+1

Modifiez votre déclaration de tableau à '[[[Date]]]'. Btw cela semble extrêmement complexe. Vous devriez poster ce que vous essayez d'accomplir. Il y a probablement un moyen plus simple de résoudre votre problème. –

Répondre

2

slot contient les dates ([Date1, Date2]), mais le compilateur ne sait pas que: Votre tableau est de type [[Any]], ce qui signifie slot est présenté comme Any.

Vous pouvez le jeter à un tableau afin d'utiliser la fonctionnalité de l'indice, par exemple:

(slot as! [Date])[0] 

Une meilleure solution serait de changer votre modèle de données à [[[Date]]], de sorte que le compilateur peut déduire slot « s Type:

var timeTableTemp: [[[Date]]] //... 
let slot = timeTableTemp[i][j] 
print(slot[1]) // slot is of type [Date] now and supports subscripting 

vous devriez essayer d'éviter autant que possible Any: Swift dispose d'un système de type impressionnant que vous jeter lors de l'utilisation Any.

+4

Ne pas suggérer de forcer la fonte. Utilisez si let et jetez-le en toute sécurité. Beaucoup mieux pour changer le type de tableau. btw Il aurait aussi besoin de vérifier le nombre de tableaux avant d'essayer d'inscrire le tableau. –

+0

Mise à jour de ma réponse à l'aide de vos commentaires – XML

+0

Il manque toujours le nombre de vérifications au tableau. l'application serait bloquée si vous transmettez un index invalide –