首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从NSDictionary到NSData,从NSData到NSDictionary

从NSDictionary到NSData,从NSData到NSDictionary
EN

Stack Overflow用户
提问于 2014-10-15 07:07:59
回答 6查看 86.9K关注 0票数 58

我不确定我是否在使用字典或数据对象,或者两者都不正确。我正试着习惯改用斯威夫特,但我遇到了一点小麻烦。

代码语言:javascript
复制
var dictionaryExample : [String:AnyObject] =
    ["user":"UserName",
     "pass":"password",
    "token":"0123456789",
    "image":0] // image should be either NSData or empty

let dataExample : NSData = dictionaryExample as NSData

我需要NSDictionaryNSData对象进行编码,并将该NSData对象解码为NSDictionary

任何帮助都是非常感谢的,谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-10-15 07:15:28

您可以使用NSKeyedArchiverNSKeyedUnarchiver

2.0+示例

代码语言:javascript
复制
var dictionaryExample : [String:AnyObject] = ["user":"UserName", "pass":"password", "token":"0123456789", "image":0]
let dataExample : NSData = NSKeyedArchiver.archivedDataWithRootObject(dictionaryExample)
let dictionary:NSDictionary? = NSKeyedUnarchiver.unarchiveObjectWithData(dataExample)! as? NSDictionary

Swift3.0

代码语言:javascript
复制
let dataExample: Data = NSKeyedArchiver.archivedData(withRootObject: dictionaryExample)
let dictionary: Dictionary? = NSKeyedUnarchiver.unarchiveObject(with: dataExample) as! [String : Any]

操场截图

票数 115
EN

Stack Overflow用户

发布于 2016-07-11 03:05:57

NSPropertyListSerialization可能是另一种解决方案。

代码语言:javascript
复制
// Swift Dictionary To Data.
var data = try NSPropertyListSerialization.dataWithPropertyList(dictionaryExample, format: NSPropertyListFormat.BinaryFormat_v1_0, options: 0)

// Data to Swift Dictionary
var dicFromData = (try NSPropertyListSerialization.propertyListWithData(data, options: NSPropertyListReadOptions.Immutable, format: nil)) as! Dictionary<String, AnyObject>
票数 9
EN

Stack Overflow用户

发布于 2020-05-04 05:36:53

Swift 5

正如@yuyeqingshan所说,PropertyListSerialization是一个很好的选择

代码语言:javascript
复制
       // Swift Dictionary To Data.
        do {
            let data = try PropertyListSerialization.data(fromPropertyList: [:], format: PropertyListSerialization.PropertyListFormat.binary, options: 0)
            // do sth
        } catch{
            print(error)
        }


        // Data to Swift Dictionary
        do {
            let dicFromData = try PropertyListSerialization.propertyList(from: data, options: PropertyListSerialization.ReadOptions.mutableContainers, format: nil)
            if let dict = dicFromData as? [String: Any]{
                // do sth
            }
        } catch{
            print(error)
        }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26376469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档