Registering Pokémon weaknesses
You could do something like:

for x in ["type", "typeTwo"] {
    if let type = object[x] where !type.isEmpty,
        let name = object["name"],
        defenseChart = pokemonTypeDefenseChart[type] { /* ... */ }
}


Also, to simplify the rest of your code, you could extend Dictionary like this:

extension Dictionary {
    subscript(key: Key, fallback fallback: Value) -&gt; Value {
        get { return self[key] ?? fallback }
        set { self[key] = newValue }
    }
}


This allows you to replace this:

for weakness in defenseChart {
    if pokemonWeaknessChart[weakness] == nil {
        pokemonWeaknessChart[weakness] = []
    }
    pokemonWeaknessChart[weakness]?.append(name)
}


by this:

for weakness in defenseChart {
    pokemonWeaknessChart[weakness, fallback: []].append(name)
}