Skip to content

Instantly share code, notes, and snippets.

@AntiMoron
Created February 27, 2017 02:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AntiMoron/de0d9250e7035b307f743a38a07f3443 to your computer and use it in GitHub Desktop.
Save AntiMoron/de0d9250e7035b307f743a38a07f3443 to your computer and use it in GitHub Desktop.
Dictionary set value for keypath
//: Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
func setDictionary( dict:inout [String: Any], value: Any, forKey: String) {
let keypaths = forKey.components(separatedBy: ".")
guard keypaths.count > 1 else {
dict[keypaths[0]] = value
return
}
if var subdict = dict[keypaths.first!] as? [String: Any] {
setDictionary(dict: &subdict, value: value, forKey: keypaths[keypaths.startIndex.advanced(by: 1)..<keypaths.endIndex].joined(separator: "."))
dict[keypaths.first!] = subdict
}
}
var tester = ["hahah": [
"id":"123213",
"fuck": "tsetest"
]] as [String: Any]
setDictionary(dict: &tester, value: "444", forKey: "hahah.id")
print(tester)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment