2017-10-19 32 views
0

J'ai mappé toutes les touches adjacentes pour chaque touche d'un clavier, de sorte que je peux rapidement rechercher une clé (par exemple "a") et vérifier si un La touche est adjacente ou non à une heure constante.Ce dictionnaire où la valeur est un ensemble ne semble pas charger dans Xcode

Il est difficile pour moi de croire que c'est très gourmand en mémoire, mais si je n'ai que les touches, ça se charge, mais au bout d'un moment, chaque fois que j'ajoute une touche, le temps augmente énormément. « t de charge du tout et est bloqué sur « la compilation des fichiers sources rapides »

var adjcacencyCharacters = [ 
    "a": Set(["a", "q", "w", "s", "z"]), 
    "b": Set(["b", "v", "g", "h", "n", "j", " "]), 
    "c": Set(["c", "x", "d", "f", "v", "g", " "]), 
    "d": Set(["d", "s", "e", "r", "f", "c", "x", "z"]), 
    "e": Set(["e", "w", "s", "d", "r"]), 
    "f": Set(["f", "d", "r", "t", "g", "v", "c", "x"]), 
    "g": Set(["g", "f", "t", "y", "h", "b", "v", "c"]), 
    "h": Set(["h", "g", "y", "u", "j", "v", "n", "b"]), 
    "i": Set(["i", "u", "j", "k", "o"]), 
    "j": Set(["j", "b", "u", "i", "k", "m", "n", "h"]), 
    "k": Set(["k", "j", "i", "o", "l", "m", "n"]), 
    "l": Set(["l", "k", "o", "p", "m"]), 
    "m": Set(["m", "j", "k", "l", "n"]), 
    "n": Set(["n", "b", "h", "j", "k", "m", " "]), 
    "o": Set(["o", "i", "k", "l", "p"]), 
    "p": Set(["p", "o", "l"]), 
    "q": Set(["q", "w", "a"]), 
    "r": Set(["r", "e", "d", "f", "t"]), 
    "s": Set(["s", "a", "w", "e", "d", "z"]), 
    "t": Set(["t", "r", "f", "g", "y"]), 
    "u": Set(["u", "y", "h", "j", "i"]), 
    "v": Set(["v", "c", "f", "g", "b", "h", " "]), 
    "w": Set(["w", "q", "a", "s", "e"]), 
    "x": Set(["x", "z", "s", "d", "f", "c"]), 
    "y": Set(["y", "t", "g", "h", "u"]), 
    "z": Set(["z", "a", "s", "d", "x"]) 
] 
+0

Mise à jour: Après environ 15-20 minutes, il a compilé et a exécuté l'application. Je me demande pourquoi cela prend si longtemps. Essayez-le dans le terrain de jeu, quelque chose doit être faux. Y a-t-il un moyen de rendre cela plus rapide, tout en conservant un ensemble pour chaque valeur de clé pour un temps de recherche constant? – VDog

Répondre

5

look comme un cas limite dans le système d'inférence de type Swift. Vous pouvez l'aider en spécifiant explicitement le type:

var adjcacencyCharacters: [String: Set<String>] = [ 
    ... 
] 
+0

Battez-moi. J'ai fait exactement la même chose et il a été compilé presque instantanément après avoir sauvegardé le terrain de jeux, quitté Xcode et rouvert le terrain de jeu. – ColGraff

+0

Bonne note en effet. – Hexfire