user9328598
user9328598

Reputation:

How to show elements of array?

I have a small problem. I created a large array. It looks like this:

var Array = [ 
["text10", "text11", ["text01", "text02"]], 
["text20", "text21", ["text11", "text12"]] 
]

If we write this way: Array[0] that shows all the elements.

If we write this way: Array[0][0] that shows "text1".

If we write this way: Array[0][2] that shows

-2 elements

-- 0: "text01"

-- 1: "text02" .

If we write this way: Array[0][2].count or Array[0][2][0] it will not work How do I choose each item, I need these elements for the tableView

Upvotes: 0

Views: 70

Answers (2)

Prashant Tukadiya
Prashant Tukadiya

Reputation: 16446

as @matt already answered but I want to add this thing

Why Array[0][2].count or Array[0][2][0] not work

If you Define array

var array = [
    ["text10", "text11", ["text01", "text02"]],
    ["text20", "text21", ["text11", "text12"]]
]

And when you type array you can see it's type is [[Any]] However it contains String as well as Array

enter image description here

So When you try to get Array[0][2] Swift does not know that your array at position 2 has another array which can have count

EDIT

What you are asking now is Array of dictionary I suggest you to go with model i.e create struct or class and use it instead of dictionary

Now If you want to create dictionary then

var arrOfDict = ["text10" :  ["text01", "text02"] , "text11" :  ["text11", "text12"]]

And you can access with key name let arrayatZero = arrOfDict["text10"] as? [String]

Upvotes: 0

matt
matt

Reputation: 535159

The problem basically is that your inner array is illegal. Swift arrays must consist of elements of a single type. You have two types of element, String and Array Of String. Swift tries to compensate but the result is that double indexing can’t work, not least because there is no way to know whether a particular element will have a String or an Array in it.

The solution is to rearchitect completely. If your array entries all consist of the same pattern String plus String plus Array of String, then the pattern tells you what to do; that should be a custom struct, not an array at all.

Upvotes: 2

Related Questions