gpt4 book ai didi

swift - 如何改变 Swift Dictionary of Dictionary

转载 作者:行者123 更新时间:2023-11-28 07:13:24 34 4
gpt4 key购买 nike

我有一个包含字典的 Swift 字典,我想使用存储的属性来访问键值:

  var json = [NSObject:AnyObject]()
var title: String {
get {
return (self.json["category"]! as [NSObject: AnyObject])["title"] as String
}
set {
// var dict = (self.json["category"]! as [NSObject: AnyObject])
// dict["title"] = newValue

(self.json["category"]! as [NSObject: AnyObject])["title"] = newValue
}
}

最后一行抛出编译错误:Operand of postfix '!'应该有可选类型;类型是'(NSObject, AnyObject)'

显然基于编译错误,编译器认为 self.json["category"] 是 (NSObject, AnyObject) 的类型,无法转换为 Dictionary!

我认为这应该是一种常见用法?您通常如何访问Dictionary of Dictionary?

最佳答案

我承认我仍然不理解这里的工作机制,但我确实看到了模式:Swift 不喜欢从 AnyObject 向下转换为可变类型的对象。对不可变类型的向下转换更为宽容,这就是为什么您会注意到上面的不对称性:您的 getter 没问题,但您的 setter 不行。

我不知道你所有的约束是什么,但看起来更可靠的方法来做你正在尝试的事情是使用 NSMutableDictionary,它允许向下转换到你内心的内容:

class UsingNSMutableDictionary {
var json = NSMutableDictionary()
var title: String {
get {
return self.json["category"]!["title"] as String
}
set {
(self.json["category"] as NSMutableDictionary)["title"] = newValue
}
}
}

在 Swift 中处理 JSON 引发了很多讨论和多个库。如果您正在寻找实用的工作解决方案来让某些东西与 JSON 一起工作,我建议您尝试其中一个库——它们倾向于采用更健壮的方法来处理 Swift 中处理 JSON 时固有的动态类型。

关于swift - 如何改变 Swift Dictionary of Dictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491807/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com