현재 스위프트로 놀고 있습니다.스위프트의 NSMutableData를 NSString으로 변환
NSURLConnection
으로 작은 다운로더 앱을 만들고 싶습니다. 지금까지 모든 것이 잘 작동하지만 두 가지 질문이 있습니다.
- 왜 내 응답 데이터를
NSString
으로 변환 할 수 없습니까? - 내 웹 서버
NSURLResponse
을NSHTTPURLResponse
으로 변환하려면 어떻게해야하나요?
지금까지 내 코드는 다음과 같습니다 : 내 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
으로 어떻게 변환 할 수 있습니까?
나는 당신의 구현이 올바른지 생각 시도의 TIS가 아니라 인코딩을 확인하려고'NSASCIIStringEncoding'는 – iphonic
좋아 그것은 내가 사용하는 잘못된 인코딩이었다. NSASCIIStringEncoding은 예상대로 작동합니다. 하지만 NSUTF8String 인코딩이 이전의 순수한 Objective-C 프로젝트에서 저에게 효과적이었습니다. 어쩌면 NSURLRepsonse를 NSHTTPURLResponse로 변환하는 방법을 알고 있습니까? 나는 이것이'var urlRsponse = self.responseMessage as NSHTTPURLResponse'와 같이 보일 것이라고 생각한다. – midori