如何使用apple bonjour for iOS阅读TXT记录

dev*_*per 6 bonjour objective-c ios

我试图在didFindService函数中获取TXTrecords,但我发现该值为null.

你有什么想法解决我的问题吗?

- (void)netServiceBrowser:(NSNetServiceBrowser*)netServiceBrowser didFindService:(NSNetService*)service moreComing:(BOOL)moreComing {
    [self.services addObject:service];

    NSDictionary* dict = [[NSNetService dictionaryFromTXTRecordData:[service TXTRecordData]] retain];
    MyTreeNode *node = [[MyTreeNode alloc] initWithValue:[service name]];
    NSString* info = [self copyStringFromTXTDict:dict which:@"info"];
    if([info isEqualToString:@"child"]) { // info == null and dict == null??
        [treeNode addChild:node];
    }
    [info release];
    if (!moreComing) {
        [self sortAndUpdateUI];
    }
}
Run Code Online (Sandbox Code Playgroud)

Lil*_*ard 7

您需要先解决服务.在回调中,您所知道的是服务存在,但您没有其记录(既不是A也不是TXT).

您可以使用-resolveWithTimeout:它来解决它.-startMonitoring如果您需要在修改TXT记录时收到通知,也可以使用.


dev*_*per 1

我的问题在这里得到解决,这是最终的代码:

- (void)netServiceBrowser:(NSNetServiceBrowser*)netServiceBrowser didFindService:(NSNetService*)service moreComing:(BOOL)moreComing {
    [service setDelegate:self];
    [service resolveWithTimeout:0.0];
    [self.services addObject:service];

    if (!moreComing) {
        [self sortAndUpdateUI];
    }
}
Run Code Online (Sandbox Code Playgroud)