我正在遍历针对核心数据存储的获取请求的结果。对于结果列表中的每个对象,我正在读取几个字符串类型的属性并将它们连接成一个字符串(作为 CSV 格式文件输出)。
我的数据集中一条特定记录的一个特定字符串给我带来了麻烦:无关字符(汉字、阿拉伯文等)附加到字符串的末尾,它没有正确附加到我的结果字符串,我的 CSV 文件格式是软管。
这是我用于循环获取结果并附加字符串的代码:
NSMutableString *reportString = [[NSMutableString stringWithFormat:@"...\n"]; for (int s = 0; s < [frc.sections count]; s++) { for (int r = 0; r < [[frc.sections objectAtIndex:s] numberOfObjects]; r++) { NSIndexPath *i = [NSIndexPath indexPathForRow:r inSection:s]; Thread *thread = [frc objectAtIndexPath:i]; NSMutableString *activity = [NSMutableString stringWithString:[thread activity]]; . . . [reportString appendString:activity]; [reportString appendFormat:@",%@\n", client]; } }
我在这里使用stringWithString,但我也使用了其他几个字符串方法,结果相似,损坏。有一次,出现了阿拉伯字母。还有一次,它是"...random...FSO_CARRIER_ATT@2X.png"。我也尝试过使用单独的获取结果数组(而不是获取结果控制器)。
一件奇怪的事情是,当我从 lldb执行PO时,字符串会正确显示。这可以解释为什么这种“腐败”没有出现在我的表格视图中,就在我试图将字符串混合在一起时。
我的问题
我是否从核心数据模型中错误地复制了字符串值并导致这种情况发生?有没有我错过的技术?
更新:
监视变量与值的 NSLog 的屏幕截图: