【问题标题】:passing a UInt32 into a NSData object returns (null)将 UInt32 传递给 NSData 对象返回 (null)
【发布时间】:2012-05-09 04:18:14
【问题描述】:

我正在尝试将 NSNumber 传递给正在工作的 UInt32。然后我试图将 UInt32 填充到 NSData 对象中。但是这就是事情变得有点古怪的地方...

当我尝试将 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)

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone ios nsdata nsnumber uint32


    【解决方案1】:

    您不能将 NSData 转换为正确的 NSString,即 NSData 不包含正确的字符串内容。

    在你的情况下,你的 NSData 只包含一个二进制无符号整数,

    你想得到什么?

    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];
    

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 2019-07-01
      • 1970-01-01
      • 2014-05-24
      • 2015-08-03
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多