不能将数据附加到NSMutableData获取分段错误11

时间:2013-07-02 17:43:51

标签: ios objective-c append nsmutabledata

这是问题,我正在接收来自2个文本字段的数据,我想将这些数据附加到mutableData中以获得1个数组并通过OutputStream发送它。这是代码

我在下一个

中声明为全局变量
NSMutableData* bufferToSend;

在init方法中我做了下一步:

bufferToSend = [[NSMutableData alloc] initWithCapacity:0];

在我发送信息的方法中:

NSString* stringArrayFromTextField1;
[bufferToSend initWithCapacity:0];
stringArrayFromTextField1 = [[NSString alloc] initWithString:[textfield1 text]];
[bufferToSend appendData:stringArrayFromTextField1]; //here gives me segmentation fault

当代码尝试执行追加时,它会崩溃,我错过了什么?

2 个答案:

答案 0 :(得分:1)

您的代码中存在多个错误/问题:

  • [bufferToSend initWithCapacity:0];对于已经初始化的对象毫无意义。
  • [[NSString alloc] initWithString:...]电话完全没必要,因为 [textfield1 text]已经是一个字符串。
  • appendData:预计NSData,而不是NSString。这可能导致崩溃。 (编译器是否没有显示有关不兼容类型的警告?)

然后代码缩减为:

NSMutableData* bufferToSend;
bufferToSend = [[NSMutableData alloc] initWithCapacity:0];

NSData *dataFromTextField = [[textfield1 text] dataUsingEncoding:NSUTF8StringEncoding];
[bufferToSend appendData:dataFromTextField];

答案 1 :(得分:0)

您正在传递 NSString 对象,其中需要 NSData 对象。但是我没有看到任何理由将它附加到您刚刚创建的数据上,因为它是空的!!所以这没关系:

stringArrayFromTextField1 = [[NSString alloc] initWithString:[textfield1 text]];
bufferToSend= [[NSKeyedArchiver archivedDataWithRootObject: stringArrayFromTextField1] mutableCopy];