HashID неправильно декодируется в Swift, но работает в Android - PullRequest
0 голосов
/ 25 апреля 2020

Помощь с HashID в Swift. Мои строки хеш-кода не декодируются должным образом. Когда я использую правильную строку, я получаю верный идентификатор обратно. Но скажем, у меня есть строка gTyU719A. Я получаю одно и то же число взамен, даже если я меняю последний символ, а иногда я получаю другое число. Я не могу разобраться с этим. Я искал в Интернете, а также спросил разработчиков. У кого-нибудь была похожая проблема? Я проверил, чтобы убедиться, что регистр символов поддерживается при передаче его функции декодирования.

Тот же алгоритм работает хорошо в Android, и я никогда не получаю избыточные идентификаторы, если строка не правильно, что так и должно быть.

func getHashFromID (id : Int) -> String{
    let hashids = Hashids(salt:mHashSalt,minHashLength: 8)
    let hash : String = hashids.encode(id) ?? ""
    return hash
}

func getIDFromHash (mHash : String) -> Int{
    let hashids = Hashids(salt:mHashSalt, minHashLength: 8)
    let numbers = hashids.decode( mHash )
    print (String(format: "Decoding %@ - %d - %d - count - %d", mHash, numbers, numbers[0], numbers.count))
    if (numbers.count>0){
        return numbers[0]
    }
    return -1
}

Спасибо за внимание.

...