我这里有个方法:
- (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
这应该很容易完成,而我可能只是因为漫长的一天而脑死亡。这应该怎么做?
您需要考虑 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/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) | Powered by Discuz! X3.4 |