首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNetService解析后的TXTRecordData为空

NSNetService解析后的TXTRecordData为空
EN

Stack Overflow用户
提问于 2012-10-17 05:25:01
回答 2查看 1.2K关注 0票数 2

所以,这就是我的问题:我的iOS应用程序在本地网络上通告一个NSNetService,服务发现运行良好。我还知道我需要先解析我的服务,然后才能读取它的TXTRecordData。在服务的-didPublish委托方法中,我确保使用NSDictionary设置了我的TXTRecordData。到目前为止,一切顺利..。

代码语言:javascript
复制
- (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser
           didFindService:(NSNetService *)aNetService
               moreComing:(BOOL)moreComing
{
    if (!self.netServicesForResolution) 
        self.netServicesForResolution = [[NSMutableArray alloc] init];

    NSLog(@"serviceBrowser found service: %@, with TXTRecordData: %@", 
          aNetService, aNetService.TXTRecordData);
    [self.netServicesForResolution addObject:aNetService];
    if (!moreComing) [self resolveNetServicesInArray];
}

- (void)resolveNetServicesInArray 
{
    for (NSNetService *service in self.netServicesForResolution) {
        service.delegate = self;
        [service resolveWithTimeout:5];
    }
}

- (void)netServiceDidResolveAddress:(NSNetService *)sender
{
    [self.netServicesForResolution removeObject:sender];
    NSString *dataDict = [NSKeyedUnarchiver unarchiveObjectWithData:sender.TXTRecordData];
    NSLog(@"freshly resolved netService has TXTRecordData: %@", dataDict);
}

如果调用-netServiceDidResolveAdress方法,应用程序就会崩溃,因为sender.TXTRecordData为空。但是为什么它是零呢?

预先感谢您的任何答案:D

EN

回答 2

Stack Overflow用户

发布于 2013-09-18 03:01:23

看起来TXT记录数据与“服务可用”通知是分开到达的。在我的netServiceBrowser:didFindService:moreComing:方法中,我确认了传入的NSNetService有一个空的TXT记录,即使我在发布之前附加了一个TXT记录,但过了一段时间我收到了一个netService:didUpdateTXTRecordData: call。

票数 3
EN

Stack Overflow用户

发布于 2012-11-11 09:17:06

我不能解释为什么TXTRecordData是空的,但您应该使用+NSNetService dictionaryFromTXTRecordData:来获取NSDictionary,而不是使用NSKeyedUnarchiver来获取NSString。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12923647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档