2015-01-06 1 views
0

내가 이것을 시도하고있는 유일한 사람일지도 모르는 것처럼 보인다, 또는, 그렇게 쉬운 모두이지만 나에게는 벌써 알고있다!문자열을 plist로 바꾼다 -

웹 사이트 요청이 plist 응답을 반환하면 응답이 문자열로 수신됩니다. 그런 다음 그 plist "문자열"을 사전에 어떻게 가져 옵니까?

let url = NSURL(string: "http://...") 
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData 
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0) 
request.HTTPMethod = "POST" 

let boundaryConstant = "----------V2ymHFg03esomerasdfsalfkjlksjdfy" 
let contentType = "mulutipart/form-data; boundary=" + boundaryConstant 
NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request) 
var dataString = "" 
let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding) 
request.HTTPBody = requestBodyData 

var response: NSURLResponse? = nil 
var error: NSError? = nil 
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) 

let results = NSString(data: reply!, encoding: NSUTF8StringEncoding) 

결과는 xml 헤더와 plist 구조를 따르는 데이터가있는 plist 문자열입니다. PLIST 리턴 내가 '점점'그래서 나는 내가 아는 한 NSURL 경로를 사용할 수 없습니다, 게시하도록하겠습니다, 내가 그러나

NSDictionary(contentsOfURL: NSURL(string: path)!)! 

를 사용하는 경우 잘 작동합니다.

미리 감사드립니다.

+0

입니다. 또는 libxml 또는 많은 타사 Obj-C XML 파서. – Cocoadelica

답변

4

NSPropertyListSerialization 너무 오래 당신이 진정 PLIST 데이터를 다시 받고있어로, 여기 당신의 친구입니다 다음 PLIST 당신이 그것을에서 데이터 구조를 구축 할 수 NSXMLParser를 사용하여 시도 할 수 XML은

if let plistData = results.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) { 
    var format = NSPropertyListFormat.XMLFormat_v1_0 
    let options = NSPropertyListMutabilityOptions.Immutable 
    if let dict = NSPropertyListSerialization.propertyListWithData(plistData, 
             options: NSPropertyListReadOptions(options.rawValue), 
             format: &format, 
             error: nil) as? NSDictionary { 
     println(dict) 
    } 
} 
+0

'NSPropertyListFormat'이 '@lvalue inout $ t7'로 변환 할 수 없다는 오류가 발생합니다. –

+0

잘못된'var'을 보겠습니다. 죄송합니다 - 해결! –

관련 문제