这是问题,我正在接收来自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
当代码尝试执行追加时,它会崩溃,我错过了什么?
答案 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];