0

我正在使用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 似乎很特别。有谁知道为什么?

4

1 回答 1

2

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

来自DNS-SD (Rendezvous) TXT 记录格式

DNS-SD 使用 DNS TXT 记录来存储任意名称/值对,以传达有关命名服务的附加信息。每个名称/值对在 DNS TXT 记录中被编码为它自己的组成字符串,格式为“name=value”。直到第一个 '=' 字符的所有内容都是名称。从第一个 '=' 字符到字符串末尾的所有内容(包括后续的 '=' 字符,如果有的话)都是值。

于 2013-05-17T04:06:16.973 回答