0
votes

Vérifiez si la matrice optionnelle est vide dans Swift

Je me rends compte qu'il y a une tonne de questions sur les réponses à ce sujet, mais pour une raison quelconque, je ne peux pas me faire fonctionner. Tout ce que je veux faire, c'est le test si un tableau a au moins un membre. Pour une raison quelconque, Apple a rendu cela compliqué à Swift, contrairement à l'objectif-C où vous venez de tester si comptez> = 1 . Le code se bloque lorsque le tableau est vide.

Voici mon code: xxx

Cependant, je reçois une erreur:

valeur de type optionnel '[mychaTVC.Quotation]?' Doit être déballé pour se référer à «Indice» du type de base enveloppé »[mychaTVC.Quotation] '.

ni des options de fixation pour chaîner ou forcer le débit résolvez l'erreur. J'ai également essayé: xxx

mais aucun de ceux qui ne fonctionneront

merci pour toute suggestion.


0 commentaires

3 Réponses :


0
votes

Vous pouvez déballer le tableau facultatif et utiliser cela comme celui-ci, utilisez également le nouveau int.random (in :) code> Syntaxe pour générer aléatoire int code> S:

if let unwrappedArray = quotearray,
    !unwrappedArray.isEmpty {
    let item = unwrappedArray[Int.random(in: 0..<unwrappedArray.count)]
}


2 commentaires

En utilisant si laisse et isempty ensemble ressemble à un bon moyen de tester une matrice optionnelle ayant un élément


Il y a toujours moyen de s'améliorer. Tout comme faire de la chèque Bool plus courte comme je viens de le faire avec non écraspararray.isempty == false instruction ou appeler le randomelement sur la matrice directement.



2
votes

aléatoire existe déjà, alors ne réinventez pas la roue: xxx

si laisse échouera en toute sécurité si Pepboys est nil ou vide.


1 commentaires

Ce code a également fonctionné. Le marquant correctement car cette version est légèrement plus courte que celle de Frankenstein qui a également fonctionné.



0
votes

Je recommanderais d'utiliser la déclaration de garde

garde, laissez Array = optiméraire,! Array.Impty ele {return} ...


0 commentaires