所以,这就是我的问题:我的iOS应用程序在本地网络上通告一个NSNetService,服务发现运行良好。我还知道我需要先解析我的服务,然后才能读取它的TXTRecordData。在服务的-didPublish委托方法中,我确保使用NSDictionary设置了我的TXTRecordData。到目前为止,一切顺利..。
- (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
发布于 2013-09-18 03:01:23
看起来TXT记录数据与“服务可用”通知是分开到达的。在我的netServiceBrowser:didFindService:moreComing:方法中,我确认了传入的NSNetService有一个空的TXT记录,即使我在发布之前附加了一个TXT记录,但过了一段时间我收到了一个netService:didUpdateTXTRecordData: call。
发布于 2012-11-11 09:17:06
我不能解释为什么TXTRecordData是空的,但您应该使用+NSNetService dictionaryFromTXTRecordData:来获取NSDictionary,而不是使用NSKeyedUnarchiver来获取NSString。
https://stackoverflow.com/questions/12923647
复制相似问题