在TXTRecordData中嵌套NSDictionary返回NULL



我使用NSNetService,并希望在TXTRecordData中存储一些数据。如果我只是存储一个NSString,它工作正常-但如果我存储一个嵌套的字典,那么dataFromTXTRecord...返回nil。例如:

NSData* d = [NSNetService dataFromTXTRecordDictionary:@{@"A": @"B"}];
// d != nil
NSData* d = [NSNetService dataFromTXTRecordDictionary:@{@"A": @{@"X":@"Y"}}];
// d == nil

显然我似乎在滥用TXTRecordData,但我想了解发生了什么。我甚至尝试将我的嵌套字典序列化为字符串,但它仍然返回nil。TXTRecordData似乎非常特殊。有人知道为什么吗?

Bonjour/DNS文本记录只能存储键/值对的平面列表,不能存储任意嵌套的字典。

From DNS-SD (Rendezvous) TXT记录格式:

DNS- sd使用DNS TXT记录存储任意名称/值对传递关于命名服务的附加信息。每一个名称/值对被编码为它自己的组成字符串DNS TXT记录,格式为"name=value"。一切都到第一'='字符是名称。第一个'='字符之后的所有内容字符串的结尾(包括后面的'='字符,如果有的话)是价值。

最新更新