为什么NSData转换为NSString在ios10

时间:2017-02-14 08:26:51

标签: objective-c ios10

最近我的应用程序在ios10上修改NSData到NSString的时候得到了一些崩溃报告,附件图像是崩溃堆栈。崩溃是由结构收集的,我无法重现它。
有没有其他人遇到同样的问题,请告诉我如何避免这个问题?
我已经检查了nsdata并确保它不是零。

[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]

#0. Crashed: com.apple.main-thread
0  libsystem_kernel.dylib         0x18b7f3014 __pthread_kill + 8
1  libsystem_pthread.dylib        0x18b8bb450 pthread_kill + 112
2  libsystem_c.dylib              0x18b767400 abort + 140
3  libsystem_malloc.dylib         0x18b837a5c _nano_vet_and_size_of_live + 330
4  libsystem_malloc.dylib         0x18b839028 nano_realloc + 648
5  libsystem_malloc.dylib         0x18b82b240 malloc_zone_realloc + 180
6  CoreFoundation                 0x18c7e3958 __CFStringCreateImmutableFunnel3 + 692
7  CoreFoundation                 0x18c76d81c CFStringCreateFromExternalRepresentation + 104
8  Foundation                     0x18d253f64 -[NSPlaceholderString initWithData:encoding:] + 148

here is the crash detail screenshot

2 个答案:

答案 0 :(得分:2)

检查您的数据是否为零而不是空

if (data && ![data isKindOfClass:[NSNull class]]) {
    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]
}

答案 1 :(得分:0)

检查data.length > 0的条件不是零,if(data.length > 0){ NSString *tempString =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //Do your tasks here } 表示它包含一些值。

{{1}}