我这里有个方法:
- (void)peripheralManagerCBPeripheralManager *)peripheral didReceiveWriteRequestsNSArray *)requests
{
NSLog(@"ERIPHERAL: peripheralManager:%@ didReceiveWriteRequests:%@", peripheral, requests);
NSString * result = [[requests valueForKey"description"] componentsJoinedByString""];
_label.text = result;
}
我在 NSArray 中收到写入请求。现在我只是将整个数组转换为字符串并将字符串输出到文本框中。确保一切设置正确。它确实在工作,但我不想列出完整的数组,而只是将值单独存储在 NSString 中。
我想要一个字符串:
Test
不是这个:
CBATTRequest: 0x1702240 Central = , Characteristic = , Offset = 0, Value = test
这应该很容易完成,而我可能只是因为漫长的一天而脑死亡。这应该怎么做?
Best Answer-推荐答案 strong>
您需要考虑 requests 是一个 CBATTRequest 数组,其中有一个 value 属性包含一个 NSData 表示正在写入的数据的对象。
如果你想要一个代表所有值的字符串,你需要遍历 requests 并将这些 NSData 值中的每一个转换为 NSString 并将它们连接起来。如果我正确理解了您的问题,那么这应该就是您要查找的内容。
- (void)peripheralManagerCBPeripheralManager *)peripheral didReceiveWriteRequestsNSArray *)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 * .
关于ios - 使用核心蓝牙从 NSArray 获取写入请求值,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/31496159/
|