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 レコード内の独自の構成文字列として、「名前=値」の形式でエンコードされます。最初の「=」文字までがすべて名前です。最初の「=」文字から文字列の最後まで (もしあれば、後続の「=」文字を含む) はすべて値です。

于 2013-05-17T04:06:16.973 に答える