使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)