【发布时间】:2016-10-22 15:36:17
【问题描述】:
dictionary(fromTXTRecord:) 的输入来自网络,可能来自应用程序外部,甚至是设备。然而,苹果的docs 说:
...如果 txtData 不能表示为 NSDictionary 对象,则断言失败。
断言失败会使程序员(我)无法处理错误,这对于处理外部数据的方法来说似乎不合逻辑。
如果我在 Mac 上的终端中运行它:
dns-sd -R 'My Service Name' _myservice._tcp local 4567 asdf asdf
我在 iPhone 上运行的应用程序崩溃了。
dictionary(fromTXTRecord:) 期望 TXT 记录数据 (asdf asdf) 采用 key=val 形式。如果像上面一样,一个词不包含任何=,则该方法将无法解析它并导致断言失败。
除了完全不使用该方法并实现我自己的解析之外,我认为没有其他方法可以解决这个问题,这感觉不对。
我错过了什么吗?
【问题讨论】:
-
这是我使用的非常好的解决方案的链接:lapcatsoftware.com/articles/netservice-nuthouse.html
标签: ios swift cocoa nsnetservice