Last active
December 18, 2017 22:57
-
-
Save snosrap/f871b6e321b1c403b73de5a242bcfb1e to your computer and use it in GitHub Desktop.
Adds a `fp_TXTRecord` category to NSNetService to allow for more natural access to TXT record data.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <Foundation/Foundation.h> | |
@interface FPNetServiceTXTRecord : NSObject | |
@property NSNetService *netService; | |
- (NSString *)objectForKeyedSubscript:(NSString *)key; | |
@end | |
@interface NSNetService (FPNetServiceAddtions) | |
- (FPNetServiceTXTRecord *)fp_TXTRecord; | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "FPNetServiceTXTRecord.h" | |
#import <objc/runtime.h> | |
@implementation FPNetServiceTXTRecord | |
- (NSString *)objectForKeyedSubscript:(NSString *)key { | |
NSData *data = [NSNetService dictionaryFromTXTRecordData:self.netService.TXTRecordData][key]; | |
return (data != nil) ? [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] : nil; | |
} | |
@end | |
@implementation NSNetService (FPNetServiceAddtions) | |
- (FPNetServiceTXTRecord *)fp_TXTRecord { | |
FPNetServiceTXTRecord *txtRecord = objc_getAssociatedObject(self, @selector(fp_TXTRecord)); | |
if(!txtRecord) { | |
txtRecord = FPNetServiceTXTRecord.new; | |
txtRecord.netService = self; | |
objc_setAssociatedObject(self, @selector(fp_TXTRecord), txtRecord, OBJC_ASSOCIATION_RETAIN_NONATOMIC); | |
} | |
return txtRecord; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment