Как преобразовать переменную NSData в переменную NSInteger в iOS - PullRequest
1 голос
/ 25 мая 2011

У меня есть следующий метод 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 голосов
/ 25 мая 2011

Что ж, если вы знаете, что ваши данные действительно представляют собой одно целое число, самый простой способ заключается в следующем:

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

UPD: NSInteger определяется в зависимости от архитектуры целевого процессора и имеет значение int или long. Не стесняйтесь заменить int на NSInteger в коде выше.

Я также не уверен, что ваши данные - это действительное число, а не строковое представление. В этом случае используйте что-то вроде

NSString *str = [[[NSString alloc] initWithData:data encoding:(encoding you need)] autorelease];
NSInteger value = [str intValue];
0 голосов
/ 24 августа 2017

Вы можете найти удобный инициализатор на NSString, который называется initWithData:. Пожалуйста, проверьте документацию для получения дополнительной информации.

Пример:

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