首页 文章

如何在iOS中将NSData变量转换为NSInteger变量

提问于
浏览
1

我有以下api方法返回 NSData . 我在另一个视图控制器中调用了此方法 . 如何将 NSData 转换为 NSInteger

-(NSData *)getBusXMLAtStop:(NSString*)stopnumber
{
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: 
                                    [NSURL URLWithString: [NSString stringWithFormat:@"http://www.google.com/ig/api?weather=,,,50500000,30500000",stopnumber]]];
    [request setHTTPMethod: @"GET"];
    dataReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
        NSLog(@"%@",dataReply);
    return dataReply;
}

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    api *ap = [[api alloc]init];
    NSData *str = [ap getBusXMLAtStop:@"1"];
    // Here is where I want to convert str into NSInteger type. How is this possible?
    NSLog(@"this is success %@",ap.dataReply);
    TWeatherParser *parser = [[TWeatherParser alloc]init];
    [parser getInitialiseWithData:ap.dataReply];
    [parser release];
    [ap release];
}

2 回答

  • 5

    好吧,如果你知道你的数据真的代表一个整数,最简单的方法如下:

    NSData *data = ...;
    int i;
    [data getBytes: &i length: sizeof(i)];
    

    UPD: NSInteger 的定义取决于目标处理器的体系结构,并且是 intlong . 您可以在上面的代码中用 NSInteger 替换 int .

    我也不确定你的数据是实际数字而不是它的字符串表示 . 在这种情况下使用类似的东西

    NSString *str = [[[NSString alloc] initWithData:data encoding:(encoding you need)] autorelease];
    NSInteger value = [str intValue];
    
  • 0

    您可以在 NSString 上找到名为 initWithData: 的便捷初始化程序 . 有关详细信息,请查看documentation .

    EXAMPLE:

    NSString * s = [[NSString alloc]initWithData:data encoding: NSUTF8StringEncoding];
    

相关问题