2012-05-09 5 views
2

Я пытаюсь передать NSNumber в UInt32, который работает. Тогда я пытаюсь передать этот UInt32 в объект NSData .. однако это то, abit funky ...Передача UInt32 в объект NSData возвращает (null)

Когда я пытаюсь написать что-то в этом объекте NSData для строки, возвращающей его (null).

Это то, что мой код выглядит, я думаю, что он имеет какое-то отношение к тому, как я передаю CACHE_VALUE в requestCacheData .. но я не совсем уверен, почему.

// Use the correctly returned cache number 
    UInt32 CACHE_VALUE = [cacheNumber intValue]; 
    NSLog(@"%lu", CACHE_VALUE); //gives me the correct integervalue 
    NSData * requestCacheData = [[NSData alloc] initWithBytes:&CACHE_VALUE length:sizeof(CACHE_VALUE)]; 

    NSString *myString = [[NSString alloc] initWithData:requestCacheData encoding:NSUTF8StringEncoding]; 
    NSLog(@"%@", myString); //outputs (null) 

любая помощь будет принята с благодарностью.

ответ

0

вы не можете повернуть NSData вправо NSString, что NSData не содержит правильного содержимого строки.

в вашем случае, ваш NSData содержат только двоичный неподписанных INT,

что же вы думаете, что получить?

NSString* str= @"a NSString"; 
NSData* requestCacheData =[str dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *myString = [[NSString alloc] initWithData:requestCacheData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@", myString); 

вы можете получить правильный, выводе

, но если вы хотите превратить UINT в NSString

просто

NSString *str = [[[NSString alloc] initWithFormat:@"%u",CACHE_VALUE] autorelease];