使用 PropertyListSerialization 在 swift 2 中制作字典

Posted

技术标签:

【中文标题】使用 PropertyListSerialization 在 swift 2 中制作字典【英文标题】:Use PropertyListSerialization to Make a Dictionary in swift 2 【发布时间】:2017-01-27 05:26:41 【问题描述】:

我正在尝试在 swift 2 中使用 PropertyListSerialization 制作字典。但它不断给出这个错误:

"can not convert value of type 'Int' to expected argument type 'NSPropertyListReadOptions' 

我的代码行是:

 NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) response,data,error in
          if data != nil 
            let datasourceDictionary = try! NSPropertyListSerialization.propertyListWithData(data! ,options:Int(NSPropertyListMutabilityOptions.Immutable.rawValue), format: nil)

还有这个:

let datasourceDictionary = try! NSPropertyListSerialization.propertyListWithData(data! ,options:Int(NSPropertyListMutabilityOptions.Immutable.rawValue), format: nil)

然后我必须遍历字典:

for(key, value): (AnyObject, AnyObject) in datasourceDictionary 
          let name = key as? String
          let url = NSURL(string:value as? String ?? "")
          if name != nil && url != nil 
            let photoRecord = PhotoRecord(name:name!, url:url!)
            self.photos.append(photoRecord)
          
        

【问题讨论】:

【参考方案1】:

你应该解开你的数据对象而不是检查它是否为零。您还需要实现 do try catch 错误处理而不是强制它:

if let data = data 
    do 
        let datasourceDictionary = try NSPropertyListSerialization.propertyListWithData(data, options: .MutableContainersAndLeaves, format: nil)
        print(datasourceDictionary)
     catch let error as NSError 
        print(error.code, error.domain)
    

【讨论】:

"大佬" = "sxc.hu/pic/m/n/ng/ngould/325616_big_fella.jpg"; "卡米诺火山" = "sxc.hu/pic/m/r/ro/rockberto/489892_camino_al_volcan_.jpg";猎豹 = "sxc.hu/pic/m/n/ng/ngould/329660_cheetah_1.jpg"; 明白了。【参考方案2】:

您无需将其更改为 Int:

 NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) response,data,error in
          if data != nil 
            let datasourceDictionary = try! NSPropertyListSerialization
                                            .propertyListWithData(data!,
                                                options:NSPropertyListMutabilityOptions.Immutable, 
                                                format: nil)

还有这个:

let datasourceDictionary = try! NSPropertyListSerialization
                                            .propertyListWithData(data! ,
                                                options:NSPropertyListMutabilityOptions.Immutable,
                                                format: nil)

【讨论】:

以上是关于使用 PropertyListSerialization 在 swift 2 中制作字典的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)