Странное поведение при отладке со структурой, содержащей UUID - PullRequest
0 голосов
/ 14 февраля 2020

Рассмотрим эту структуру:

struct test
{
    var id:UUID = UUID()
    var name:String = ""
}

При выполнении следующей строки кода:

var myTest : test?

Отладчик правильно показывает myTest = nil

Затем я выполняю:

myTest = test()

Отладчик по-прежнему показывает MyTest = nil

Если я удаляю переменную id из структуры, отладчик правильно показывает значение для myTest.

Кажется, что всякий раз, когда у меня есть UUID в структуре, он делает это.

Это ошибка в Xcode11, или я что-то упускаю?

Вот скриншот после объявления myTest, показывающий ноль, как и ожидалось:

enter image description here

Вот скриншот после установки myTest для test () и его печати. Вы можете видеть, что печать показывает инициализированную структуру, но окно отладки все еще показывает myTest как nil:

enter image description here

1 Ответ

0 голосов
/ 15 февраля 2020

Я не уверен, почему вы думаете, что это неожиданное поведение. Если бы у вас была такая структура:

struct test {
    var name: String = ""
}

При этом

var myTest: test?

myTest = test()

print(myTest)

результат: Optional(__lldb_expr_7.test(name: ""))

Даже если вы добавите в UUID примерно так:

struct test {
    var id: UUID = UUID(uuid: UUID_NULL)
    var name: String = ""
}

и сделал то же самое

var myTest: test?
myTest = test()
print(myTest)

Результат: Optional(__lldb_expr_9.test(id: 00000000-0000-0000-0000-000000000000, name: ""))

Вам все еще дана структура

если у вас была такая структура

struct test {
    var id: UUID = UUID(uuid: UUID_NULL)
    var name: String = ""
    var lastName: String = ""
}

и вы все еще делали то же самое ...

var myTest: test?

myTest = test()

print(myTest)

результат: Optional(__lldb_expr_11.test(id: 00000000-0000-0000-0000-000000000000, name: "", lastName: ""))

вы все равно вернетесь результаты ...

Результатами являются все пустые или пустые строки, как определено в структуре ...

мы можем затем добавить в структуру следующим образом:

var myTest: test?

myTest = test(id: some_UUID_Number_Here, name: "Jack", lastName: "Sparrow")

print(myTest as Any)

результат: Optional(__lldb_expr_3.test(id: BBDD802E-8976-4D93-A6E2-1D43442EA9CD, name: "Jack", lastName: "Sparrow"))

Надеюсь, это поможет ...

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