Objective c 将NSData objectiveC代码转换为swift时出错

Objective c 将NSData objectiveC代码转换为swift时出错,objective-c,swift,nsstring,nsdata,Objective C,Swift,Nsstring,Nsdata,我试着把目标C中的代码转换成Swift - (IBAction) sendMessage { NSString *response = [NSString stringWithFormat:@"msg:%@", inputMessageField.text]; NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSASCIIStringEncoding]]; [outputS

我试着把目标C中的代码转换成Swift

- (IBAction) sendMessage {

    NSString *response  = [NSString stringWithFormat:@"msg:%@", inputMessageField.text];
    NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSASCIIStringEncoding]];
    [outputStream write:[data bytes] maxLength:[data length]];
    inputMessageField.text = @"";

}
下面是我的swift代码

@IBAction func sendMessage() {

        var response  = NSString.localizedStringWithFormat("msg:\(inputMessageField?.text)")
        var data = NSData(Data :response , dataUsingEncoding:NSASCIIStringEncoding)
        outputStream(write:data.bytes, maxLength:data.length);
        inputMessageField?.text = ""

    }
我得到一个错误,告诉我一个数据是一个额外的参数。请帮我解决这个问题。

没有
NSData(数据:响应,数据使用编码:NSASCIIStringEncoding)
方法。您可能正在寻找

let data = 
response.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
您的整个代码应该如下所示:

let response  = NSString.localizedStringWithFormat("msg:\(inputMessageField?.text)")
if let data = response.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
    outputStream(write:data.bytes, maxLength:data.length);
    inputMessageField?.text = ""
}
else {
    println("could not convert response \"\(response)\" to NSData")
}

尽可能使用let,并检查可故障初始化器是否返回值,您要查找的方法是否不存在

你可以这样转换

var data = NSData(data :response.dataUsingEncoding(NSASCIIStringEncoding)!)

已更新

方法
outputStream.write()
需要
UInt8[]
array,因此您必须将数据转换为
UInt8[]array

你的代码应该是

@IBAction func sendMessage() {
    var response  = NSString.localizedStringWithFormat("msg:\(inputMessageField?.text)")
    var data = NSData(Data :response , dataUsingEncoding:NSASCIIStringEncoding)        
    outputStream.write(UnsafePointer(data.bytes), maxLength:data.length)
    inputMessageField?.text = ""
}

Thanku:)(write:UnsafePointer,maxLength:Int)->$T6与NSOutputstream不同。我从上面的代码中得到了这个错误。@Jeyanthu:应该可以这样做:
outputStream.write(UnsafePointer(data.bytes),maxLength:data.length)
。还要注意,写入流实际上可能比您提供的写入字节少。比较。(write:UnsafePointer,maxLength:Int)->$T6与NSOutputstream不同。我在上面的代码中得到了这个错误,这是因为
outputstream
需要
UInt8[]array
,请查看更新的代码以及您使用的方法
outputstream(write())
需要
3个参数
,其中需要
UnsafePointer
,但您不需要该方法写入流,您的
缓冲区
只包含零,而不包含
数据
中的字节。