简体   繁体   中英

Iterate Dictionary with dictionary data and add it to an array in swift

I have a dictionary with multiple dictionary data :

{
    1455201094707 =     {
    };
    1455201116404 =     {
    }: 
    1455201287530 =     {
    };
}

I have to add all these dictionaries to an array in swift. How to iterate dictionary as :

for let tempDict in dataDictionary
{
     self.tempArray.addObject(tempDict)
}

Error "let pattern cannot appear nested in an already immutable context"

for tempDict in dataDictionary as! NSMutableDictionary
{
     self.tempArray.addObject(tempDict)
}

Error : Argument type element(aka(key:AnyObject, value:AnyObject)) argument type does not conform to expected type anyobject

for tempDict in dataDictionary as! NSMutableDictionary
{
     self.tempArray.addObject(tempDict as! AnyObject)
}

Error: Could not cast value of type '(Swift.AnyObject, Swift.AnyObject)' (0x1209dee18) to 'Swift.AnyObject' (0x11d57d018).

for tempDict in dataDictionary
{
     self.tempArray.addObject(tempDict)
}

Error: Value of Type AnyObject has no member generator

Edit

I want the final array as :

(
  {
    1455201094707 =     {
    };
  }
  {
     1455201116404 =     {
     }:
  } 
)   

What is the correct way to implement this?

Any help will be appreciated.....

I have used code :

var tempArray:[NSDictionary] = []

    for (key, value) in tempDict {
        tempArray.append([key : value])
    }

Error: value of type AnyObject does not conform to expected dictionary key type NSCopying

code :

let tempArray = tempDict.map({ [$0.0 : $0.1] }) 

Error : type of expression is ambiguous without more context

First of all, when you use

for let tempDict in dataDictionary {
     self.tempArray.addObject(tempDict)
}

Swift gives you tuple like (key, value) in tempDict.

So you should iterate like this

for (key, value) in sourceDict {
     tempArray.append(value)
}

Note: I used here native swift structures, and my advise - to use them as often as possible (instead of ObjC ones)

Or you can use map-function on dictionary.

let array = sourceDict.map({ $0.1 })

Edit. For

(
  {
    1455201094707 =     {
    };
  }
  {
     1455201116404 =     {
     }:
  } 
) 

use

for (key, value) in sourceDict {
     tempArray.append([key : value])
}

or

let array = dict.map({ [$0.0 : $0.1] })

Note. if you use NSDictionary you should cast it to swift Dictionary

if let dict = dict as? [String: AnyObject] {
    let array = dict.map({ [$0.0 : $0.1] })
    print(array)
}
  1. Get all keys from the dictionary, for this NSDictionary has property allKeys .

  2. Loop all keys, and add object for the key to the array.

  3. Before the all steps above, read documentation !

Good luck!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM