2014-06-05 1 views
1

현재 스위프트로 놀고 있습니다.스위프트의 NSMutableData를 NSString으로 변환

NSURLConnection으로 작은 다운로더 앱을 만들고 싶습니다. 지금까지 모든 것이 잘 작동하지만 두 가지 질문이 있습니다.

  1. 왜 내 응답 데이터를 NSString으로 변환 할 수 없습니까?
  2. 내 웹 서버 NSURLResponseNSHTTPURLResponse으로 변환하려면 어떻게해야하나요?

지금까지 내 코드는 다음과 같습니다 : 내 responseData 바이트의 상당한 양을 가지고 있지만

import Foundation 

class Downloader: NSObject, NSURLConnectionDelegate { 

    let urlString: String 
    var responseData: NSMutableData = NSMutableData() 
    var responseMessage: NSURLResponse = NSURLResponse() 

    init(urlString: String) { 
     self.urlString = urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding); 
    } 

    func startDownloaderWithUrl() { 
     let url: NSURL = NSURL.URLWithString(self.urlString); 
     let r: NSURLRequest = NSURLRequest(URL: url); 
     let connection:NSURLConnection = NSURLConnection(
      request: r, 
      delegate: self, 
      startImmediately: true); 
    } 

    func connection(connection: NSURLConnection!, didFailWithError error: NSError!) { 
     NSLog("Connection failed.\(error.localizedDescription)") 
    } 

    func connection(connection: NSURLConnection, didRecieveResponse response: NSURLResponse) { 
     NSLog("Recieved response") 
     self.responseMessage = response; 
    } 

    func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) { 
     self.responseData = NSMutableData() 
    } 

    func connection(connection: NSURLConnection!, didReceiveData data: NSData!) { 
     self.responseData.appendData(data) 
    } 

    func connectionDidFinishLoading(connection: NSURLConnection!) { 
     let responseString: NSString = NSString(data: self.responseData, encoding: NSUTF8StringEncoding); 

     NSLog("%@", "Finished Loading"); 
     //NSLog("%@", self.responseData); 
     NSLog("%@", responseString); 
    } 
} 

responseString 항상 nil입니다. 둘째, 응답 메시지를 NSHTTPURLResponse으로 어떻게 변환 할 수 있습니까?

+1

나는 당신의 구현이 올바른지 생각 시도의 TIS가 아니라 인코딩을 확인하려고'NSASCIIStringEncoding'는 – iphonic

+0

좋아 그것은 내가 사용하는 잘못된 인코딩이었다. NSASCIIStringEncoding은 예상대로 작동합니다. 하지만 NSUTF8String 인코딩이 이전의 순수한 Objective-C 프로젝트에서 저에게 효과적이었습니다. 어쩌면 NSURLRepsonse를 NSHTTPURLResponse로 변환하는 방법을 알고 있습니까? 나는 이것이'var urlRsponse = self.responseMessage as NSHTTPURLResponse'와 같이 보일 것이라고 생각한다. – midori

답변

0

는 ASCII가 나를 위해 일에 인코딩을 변경 NSMutableData 문자열로

var YourSting = NSString(data responseData: NSData!, encoding encoding: UInt) 
3

func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) { 
    self.data = NSMutableData() 
} 

func connection(connection: NSURLConnection!, didReceiveData data: NSData!) { 
    self.data.appendData(data) 
} 

func connectionDidFinishLoading(connection: NSURLConnection!) { 
    var dta = NSString(data: data, encoding: NSUTF8StringEncoding) 
    println("the string is: \(dta)") 

    } 
+0

고맙습니다.하지만 사용 된 인코딩이 잘못되었습니다. 나 자신의 대답을 받아들이려면 하루 더 기다려야한다. – midori