I have an array, for instance ["Apple", "Banana", "Blueberry", "Eggplant"]
and I would like to convert it to a dictionary like follows:
[
"A" : ["Apple"],
"B" : ["Banana", "Blueberry"],
"C" : [],
"D" : [],
"E" : ["Eggplant"]
]
I am using Swift 2 on Xcode 7 beta 4. Thanks!
Using only Swift 2 objects and methods, and with a key for each letter in the alphabet:
let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters.map({ String($0) })
let words = ["Apple", "Banana", "Blueberry", "Eggplant"]
var result = [String:[String]]()
for letter in alphabet {
result[letter] = []
let matches = words.filter({ $0.hasPrefix(letter) })
if !matches.isEmpty {
for word in matches {
result[letter]?.append(word)
}
}
}
print(result)
I composed this in Xcode playground:
import Foundation
var myArray = ["Apple", "Banana", "Blueberry", "Eggplant"]
var myDictionary : NSMutableDictionary = NSMutableDictionary()
for eachString in myArray as [NSString] {
let firstCharacter = eachString.substringToIndex(1)
var arrayForCharacter = myDictionary.objectForKey(firstCharacter) as? NSMutableArray
if arrayForCharacter == nil
{
arrayForCharacter = NSMutableArray()
myDictionary.setObject(arrayForCharacter!, forKey: firstCharacter)
}
arrayForCharacter!.addObject(eachString)
}
for eachCharacter in myDictionary.allKeys
{
var arrayForCharacter = myDictionary.objectForKey(eachCharacter) as! NSArray
print("for character \(eachCharacter) the array is \(arrayForCharacter)")
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With