Почему этот алгоритм сортировки не работает? - PullRequest
0 голосов
/ 04 мая 2019

Я разработал приведенный ниже алгоритм для сортировки массива элементов словаря.

guard var imageUrlString = anyImage.value as? [String:AnyObject] else { return }

var values = [AnyObject]()
var keys = [String]()
var done = false
var j = 1

while !done {
    for i in imageUrlString {
        print(i.key, " this is the key")
        if "media\(j)" == i.key {
            values.append(i.value)
            keys.append(i.key)
            print(i, " This is teh i for in if ")
            if imageUrlString.count == j {
                done = true
                break;
            }
            j+=1
        } else {
            print("No,,.")
        }
    }
}

Проблема в том, что иногда, например, каждый раз, когда первый носитель является изображением, он будет зацикливаться вечно. Как я могу решить это, чтобы алгоритм мог эффективно сортировать при любых условиях?

1 Ответ

2 голосов
/ 04 мая 2019

Похоже, вы действительно создаете два параллельных массива: keys и values.

Я занялся созданием этих двух массивов, отсортированных.Вот пример

var imageUrlString = [String: AnyObject]()
imageUrlString["media3"] = "whatever 3 content" as AnyObject
imageUrlString["media7"] = "whatever 7 content" as AnyObject
imageUrlString["media1"] = "whatever 1 content" as AnyObject

let keys = Array(imageUrlString.keys).sorted()
var values = [AnyObject]()

keys.forEach {
    values.append(imageUrlString[$0]!)
}

print(keys)
print(values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...