2

当我尝试传递设备 udid + 设备名称时,我收到以下崩溃

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“传递给 MCPeerID 的 displayName 无效”

4

1 回答 1

4
init(displayName myDisplayName: String)

来自苹果文档

UTF-8 编码中允许的最大长度为63 个字节

displayName 参数不能为nil空字符串

如果displayName太长、为空或 nil,此方法将引发异常。

在您的情况下,您通过udid + device name的超出了允许的限制,即63 个字节(63 个字符)

并会抛出一个异常说:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“传递给 MCPeerID 的 displayName 无效

只是为了调试:

在传递之前lengthOfBytes为您打印肯定会超过允许的限制。udid + device nameinit(displayName myDisplayName: String)

print((UIDevice.current.name+udid).lengthOfBytes(using: String.Encoding.utf8))
于 2017-06-01T10:34:47.810 回答