使用 Core Bluetooth 从 NSArray 获取写请求值
Getting write request value from NSArray with Core Bluetooth
我这里有个方法:
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
{
NSLog(@"PERIPHERAL: peripheralManager:%@ didReceiveWriteRequests:%@", peripheral, requests);
NSString * result = [[requests valueForKey:@"description"] componentsJoinedByString:@""];
_label.text = result;
}
我在 NSArray
中收到写入请求。现在我只是将整个数组转换成一个字符串并将该字符串输出到一个文本框中。确保一切设置正确。它确实有效,但我不希望列出完整的数组,而只希望将值单独存储在 NSString
中。
我想要一个字符串:
Test
不是这个:
CBATTRequest: 0x1702240 Central = , Characteristic = , Offset = 0, Value = test
这应该很容易完成,我可能只是因为漫长的一天而脑死亡。这应该怎么做?
你需要考虑 requests
是一个 CBATTRequest
的数组,它有一个 value
属性 包含一个 NSData
对象代表数据正在写入。
如果您想要一个表示所有值的字符串,您需要遍历 requests
并将每个 NSData
值转换为 NSString
并将它们连接起来。如果我对你的问题的理解正确,这应该就是你要找的。
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests {
NSMutableString *output = [[NSMutableString alloc] init];
for (CBATTRequest *request in requests) {
NSString *stringValue = [[NSString alloc] initWithData:[request value] encoding:NSUTF8StringEncoding];
if (stringValue) {
[output appendString:stringValue];
}
}
_label.text = output.copy;
}
请注意,更新到 Xcode 7 将有助于使这一点更加清晰,因为 -peripheralManager:didReceiveWriteRequests:
的 requests
参数已更新为使用 Objective-C 泛型,并且现在的类型是 NSArray<CBATTRequest *> *
.
我这里有个方法:
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
{
NSLog(@"PERIPHERAL: peripheralManager:%@ didReceiveWriteRequests:%@", peripheral, requests);
NSString * result = [[requests valueForKey:@"description"] componentsJoinedByString:@""];
_label.text = result;
}
我在 NSArray
中收到写入请求。现在我只是将整个数组转换成一个字符串并将该字符串输出到一个文本框中。确保一切设置正确。它确实有效,但我不希望列出完整的数组,而只希望将值单独存储在 NSString
中。
我想要一个字符串:
Test
不是这个:
CBATTRequest: 0x1702240 Central = , Characteristic = , Offset = 0, Value = test
这应该很容易完成,我可能只是因为漫长的一天而脑死亡。这应该怎么做?
你需要考虑 requests
是一个 CBATTRequest
的数组,它有一个 value
属性 包含一个 NSData
对象代表数据正在写入。
如果您想要一个表示所有值的字符串,您需要遍历 requests
并将每个 NSData
值转换为 NSString
并将它们连接起来。如果我对你的问题的理解正确,这应该就是你要找的。
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests {
NSMutableString *output = [[NSMutableString alloc] init];
for (CBATTRequest *request in requests) {
NSString *stringValue = [[NSString alloc] initWithData:[request value] encoding:NSUTF8StringEncoding];
if (stringValue) {
[output appendString:stringValue];
}
}
_label.text = output.copy;
}
请注意,更新到 Xcode 7 将有助于使这一点更加清晰,因为 -peripheralManager:didReceiveWriteRequests:
的 requests
参数已更新为使用 Objective-C 泛型,并且现在的类型是 NSArray<CBATTRequest *> *
.