ios - 使用核心蓝牙从 NSArray 获取写入请求值
<p><p>我这里有个方法:</p>
<pre><code>- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
{
NSLog(@"PERIPHERAL: peripheralManager:%@ didReceiveWriteRequests:%@", peripheral, requests);
NSString * result = [ componentsJoinedByString:@""];
_label.text = result;
}
</code></pre>
<p>我在 <code>NSArray</code> 中收到写入请求。现在我只是将整个数组转换为字符串并将字符串输出到文本框中。确保一切设置正确。它确实在工作,但我不想列出完整的数组,而只是将值单独存储在 <code>NSString</code> 中。 </p>
<p>我想要一个字符串:</p>
<blockquote>
<p>Test</p>
</blockquote>
<p>不是这个:</p>
<blockquote>
<p>CBATTRequest: 0x1702240 Central = , Characteristic = , Offset = 0, Value = test</p>
</blockquote>
<p>这应该很容易完成,而我可能只是因为漫长的一天而脑死亡。这应该怎么做? </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您需要考虑 <code>requests</code> 是一个 <code>CBATTRequest</code> 数组,其中有一个 <code>value</code> 属性包含一个 <code>NSData</code> 表示正在写入的数据的对象。</p>
<p>如果你想要一个代表所有值的字符串,你需要遍历 <code>requests</code> 并将这些 <code>NSData</code> 值中的每一个转换为 <code>NSString</code>并将它们连接起来。如果我正确理解了您的问题,那么这应该就是您要查找的内容。</p>
<pre><code>- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests {
NSMutableString *output = [ init];
for (CBATTRequest *request in requests) {
NSString *stringValue = [ initWithData: encoding:NSUTF8StringEncoding];
if (stringValue) {
;
}
}
_label.text = output.copy;
}
</code></pre>
<p>请注意,更新到 Xcode 7 将有助于更清楚地说明这一点,因为 <code>-peripheralManager:didReceiveWriteRequests:</code> 的 <code>requests</code> 参数已更新为使用 Objective-C 泛型, 现在有类型 <code>NSArray<CBATTRequest *> *</code>.</p></p>
<p style="font-size: 20px;">关于ios - 使用核心蓝牙从 NSArray 获取写入请求值,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/31496159/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/31496159/
</a>
</p>
页:
[1]