Недопустимое displayName передано MCPeerID

Когда я попытался передать устройство UDID + имя устройства, я получил ниже сбоя

Завершение работы приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: "Недопустимое displayName передано MCPeerID"

1 ответ

Решение
init(displayName myDisplayName: String)

Из Apple Docs:

Максимально допустимая длина составляет 63 байта в кодировке UTF-8.

Параметр displayName не может быть nil или пустой строкой.

Этот метод генерирует исключение, если значение displayName слишком длинное, пустое или ноль.

В вашем случае вы проходите udid + device name превышающий допустимый предел, т.е. 63 байта (63 символа)

и бросит исключение, сказав:

Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "Недопустимое displayName передано MCPeerID

Просто для отладки:

Распечатать lengthOfBytes для тебя udid + device name прежде чем передать его в init(displayName myDisplayName: String) это определенно превысит допустимый предел.

print((UIDevice.current.name+udid).lengthOfBytes(using: String.Encoding.utf8))
Другие вопросы по тегам