2017-10-19 35 views
0

我映射了鍵盤上每個鍵的所有相鄰鍵,這樣我就可以快速查找一個鍵(例如「a」),並檢查一個鍵鍵在相鄰或不定時。這個字典的值是一個集合,似乎沒有在Xcode中加載

我很難相信這是內存密集型的,但是如果我只加載了它的密鑰,但是過了一段時間,每次我添加一個密鑰,時間都會顯着增加,完全沒有加載,並且停留在「編譯快速源文件」

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

更新:大約15-20分鐘後,它編譯並運行應用程序。我想知道爲什麼這需要這麼長時間。在操場上試試,一定是錯的。有沒有辦法讓這個速度更快,同時保持每個關鍵值的恆定查找時間? – VDog

回答

5

看起來像Swift類型推理系統中的邊緣情況。您可以通過明確指定類型來幫助它:

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

打敗我吧。我做了同樣的事情,在我拯救了遊樂場後,幾乎立即編譯完成,退出Xcode並重新打開操場。 – ColGraff

+0

確實不錯。 – Hexfire

相關問題