Reputation: 4886
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
Upvotes: 2
Views: 2950
Reputation: 1141
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)
}
Upvotes: 5
Reputation: 11770
Get all keys from the dictionary, for this NSDictionary
has property allKeys
.
Loop all keys, and add object for the key to the array.
Before the all steps above, read documentation!
Good luck!
Upvotes: -2