• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 使用核心蓝牙从 NSArray 获取写入请求值

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:51:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我这里有个方法:

- (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-推荐答案


您需要考虑 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap