Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从NSData获取Int_Objective C_Xcode_Nsdata - Fatal编程技术网

Objective c 从NSData获取Int

Objective c 从NSData获取Int,objective-c,xcode,nsdata,Objective C,Xcode,Nsdata,我正在使用一个库,它能够从BTLE设备中提取数据并将其放入NSData中。但是,我需要将单独的数据行提取到int中。我该怎么做 代码如下: - (void)realDataCallBackWithData:(NSData *)realData{ if (realData == nil) { DLog(@"error"); return; } VTRealObject *rObj = [

我正在使用一个库,它能够从BTLE设备中提取数据并将其放入NSData中。但是,我需要将单独的数据行提取到int中。我该怎么做

代码如下:

- (void)realDataCallBackWithData:(NSData *)realData{
      if (realData == nil) {
              DLog(@"error");
              return;
      }
      VTRealObject *rObj = [VTO2Parser parseO2RealObjectWithData:realData];
      self.descLab.text = [rObj description];
}

- (UILabel *)descLab{
      if (!_descLab) {
              _descLab =  elalloc initWithFrame:[UIScreen mainScreen].bounds];
              _descLab.numberOfLines = 0;
              _descLab.textAlignment = NSTextAlignmentCenter;
              [self.view addSubview:_descLab];
      }
      return _descLab;
}
以下是库VTO2Parser.h代码:

#import <Foundation/Foundation.h>
#import "VTO2Info.h"
#import "VTO2Object.h"
#import "VTO2WaveObject.h"
#import "VTRealObject.h"

NS_ASSUME_NONNULL_BEGIN

@interface VTO2Parser : NSObject

// @brief parse O2 information
// @param infoData infoData from peripheral
+ (VTO2Info *)parseO2InfoWithData:(NSData * _Nonnull)infoData;

// @brief parse O2 object
// @param fileData fileData from peripheral
+ (VTO2Object *)parseO2ObjectWithData:(NSData * _Nonnull)fileData;

// @brief parse O2 Wave array .
// @param waveData waveData from   VTO2Object
+ (NSArray <VTO2WaveObject *>*)parseO2WaveObjectArrayWithWaveData:(NSData * 
_Nonnull)waveData;

// @brief parse O2 Real-time data
// @param realData realData from peripheral
+ (VTRealObject *)parseO2RealObjectWithData:(NSData *)realData;

// @brief parse O2 Real PPG data
// @param realPPG real PPG data from peripheral
+ (NSArray <VTRealPPG *>*)parseO2RealPPGWithData:(NSData *)realPPG;

@end

NS_ASSUME_NONNULL_END
#导入
#导入“VTO2Info.h”
#导入“VTO2Object.h”
#导入“VTO2WaveObject.h”
#导入“VTRealObject.h”
NS\u假设\u非空\u开始
@接口VTO2Parser:NSObject
//@brief解析O2信息
//@param infoData来自外围设备
+(VTO2Info*)parseo2info-withdata:(NSData*_Nonnull)infoData;
//@brief解析对象
//@param fileData fileData来自外围设备
+(VTO2Object*)parseO2ObjectWithData:(NSData*)非空文件数据;
//@2波阵。
//@param waveData来自VTO2对象的waveData
+(NSArray*)使用WaveData解析2WaveObjectArray:(NSData*
_非空)波数据;
//@brief解析O2实时数据
//@param realData来自外围设备的realData
+(vRealObject*)parseO2RealObjectWithData:(NSData*)realData;
//@brief解析O2真实PPG数据
//@param realPPG来自外围设备的真实PPG数据
+(NSArray*)parseo2realpgWithData:(NSData*)realPPG;
@结束
NS\u假设\u非空\u结束
这里还有VTO2Object.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface VTRealObject : NSObject

// @brief blood oxygen value
@property (nonatomic, assign) u_char spo2;

// @brief heart rate
@property (nonatomic, assign) u_short hr;

// @brief battery value
@property (nonatomic, assign) u_char battery;

// @brief battery status
@property (nonatomic, assign) u_char batState;

// @brief Perfusion Index value
@property (nonatomic, assign) u_char pi;

// @brief lead status . for BabyO2:       0: Probe off     1: Lead normal       2: Lead off
@property (nonatomic, assign) u_char leadState;

// @brief motion value
@property (nonatomic, assign) u_char vector; 

@end


@interface VTRealPPG : NSObject

// @brief Infrared
@property (nonatomic, assign) int ir;

// @brief RLED
@property (nonatomic, assign) int red;

// @brief motion
@property (nonatomic, assign) u_char motion;

@end


NS_ASSUME_NONNULL_END
#导入
NS\u假设\u NONNULL\u BEGIN
@接口VTRealObject:NSObject
//@短暂血氧值
@属性(非原子,赋值)u_char spo2;
//@短心率
@属性(非原子,赋值)u_短hr;
//@简短电池值
@属性(非原子,分配)u_炭电池;
//@简要电池状态
@属性(非原子,赋值)u_char batState;
//@简短灌注指数值
@属性(非原子,赋值)u_char pi;
//@简短的潜在客户状态。对于狒狒2:0:探头断开1:导线正常2:引出
@属性(非原子,赋值)u_char leadState;
//@简短运动值
@属性(非原子,赋值)u_字符向量;
@结束
@接口VTRealPPG:NSObject
//@brief红外线
@属性(非原子,赋值)int-ir;
//@brief-RLED
@属性(非原子,赋值)int-red;
//@简短动议
@属性(非原子,赋值)u_字符运动;
@结束
NS\u假设\u非空\u结束
应用程序内的最终结果如下所示:

--{ 蝙蝠状态=0; 电池=66;hr=76;导线状态=1;pi=20;spo2=98;矢量=0;}


如何从上述数据中分离出Int,以便将其分配给各个标签?

您的VTRealObject
rObj
可能已经包含您想要的所有值,并将它们作为属性或方法返回值传递给您


如果没有,那么您需要完全按照VTO2Parser已经在做的事情:直接查看
realData
并解析它,找到它包含的值并解释它们。为此,您必须知道
realData
的格式。这样,任务就容易了。例如,如果您知道
realData
的前2/4个字节是表示
batState
long
,那么将它们作为
long
读取就很简单了。诸如此类。

谢谢你提供的信息,不过我该怎么做,请你举个例子好吗?不,不可能,因为你隐瞒了所有事实。我不知道VTRealObject是什么。是的。我不知道你的数据里有什么。是的。您没有在问题中提供任何相关信息,因此无法给出更具体的答案。但我向你保证,人们总是把NSData解析成一系列数字(
long
或其他什么);如何做到这一点,一旦你知道你的NSData编码信息的格式,这里已经解释了很多次了。我不知道我没有提供足够的信息,这很容易纠正。我将用VTO2Parser的库信息更新问题。谢谢你指出我没有包含足够的信息,我现在用信息更新了问题,这是否足够让你提供一个示例?酷,那么问题出在哪里?我说的是对的。例如
@property(非原子,赋值)u_char电池
表示有一个
电池
属性正在等待获取它并执行任何您喜欢的操作。