Быстрая сортировка структуры путем заказа из другой структуры - PullRequest
0 голосов
/ 26 июня 2019

У меня есть 2 структуры (game, otGame), которые содержат свойство NSString с именем [cod].Я пытаюсь придать второй структуре тот же порядок, что и первой, где [cod] такой же, и добавить излишки в очередь.

game = [cod("001234"),cod("001111"),cod("002222"),cod("005555")]
otGame = [cod("002222"),cod("005555"),cod("001111")]

struct game {
    var cod: NSString
    var des: Float?
}

struct otGame {
    var cod: NSString
    var sor: Float?
}

Я ожидаю, что вывод otGame будет

[cod("001111"),cod("002222"),cod("005555"),cod("001234")]

1 Ответ

0 голосов
/ 26 июня 2019

Я думаю, вы должны сделать что-то вроде этого:

struct Game {
    var cod: String
    var des: Float?
}

struct OtGame {
    var cod: String
    var sor: Float?
}

let games = [Game(cod: "001234", des: nil),
             Game(cod: "001111", des: nil),
             Game(cod:"002222", des: nil),
             Game(cod:"005555", des: nil)]
var otGames = [OtGame(cod: "002222", sor: nil),
               OtGame(cod: "005555", sor: nil),
               OtGame(cod: "001111", sor: nil)]

//Sort otGames based on indexes of games
otGames.sort { (o1, o2) -> Bool in
    if let index1 = games.firstIndex(where: {$0.cod == o1.cod}), let index2 = games.firstIndex(where: {$0.cod == o2.cod}) {
        return index1 < index2
    }
    return false
}

// Add missing games
for game in games {
    if !otGames.contains(where: {$0.cod == game.cod}) {
        otGames.append(OtGame(cod: game.cod, sor: game.des))
    }
}

Обратите внимание, что этот вид имеет очень плохие характеристики, я предлагаю вам найти другую структуру данных или решение для предотвращения этого вычисления.

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