将字符串转换为 plist - swift

Jas*_*n G 0 nsdictionary plist ios swift

看起来我可能是唯一一个尝试这样做的人,或者它是如此简单,除了我之外的每个人都已经知道如何做了!

网站请求返回 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)
Run Code Online (Sandbox Code Playgroud)

results 是一个 plist 字符串,其中包含 xml 标头和遵循 plist 结构的数据。如果我使用 plist 返回效果很好

NSDictionary(contentsOfURL: NSURL(string: path)!)!
Run Code Online (Sandbox Code Playgroud)

但是,我正在发布,而不是“获取”,因此据我所知,我无法使用 NSURL 路径。

提前致谢!

Nat*_*ook 5

NSPropertyListSerialization是你的朋友,只要你真正取回 plist 数据:

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)
    }
}
Run Code Online (Sandbox Code Playgroud)