gpt4 book ai didi

ios - [String : AnyObject] be an AnyObject, 但 [String : AnyObject? ] 怎么可能不行?

转载 作者:行者123 更新时间:2023-11-28 06:59:37 26 4
gpt4 key购买 nike

此代码将(在 Swift 1.2 中)在最后一行失败:

import Foundation

let dictionary1 = [String: AnyObject]()
NSUserDefaults.standardUserDefaults().setObject(dictionary1, forKey: "test1")

let dictionary2 = [String: AnyObject?]()
NSUserDefaults.standardUserDefaults().setObject(dictionary2, forKey: "test2")

(setObject 方法将 AnyObject 作为其第一个参数。)

通常,Swift 会在第一行失败,但由于导入 Foundation 时的一些魔法,所有内置类型通常都成为 AnyObject 的实现者(大概是因为它们将被桥接为 NSStringNSArrayNSDictionary 等)。我依靠这种行为能够将 Swift 数据传递到 NSUserDefaults

我的问题是我想传入一个字典,其中的值可能是 nil,但出于某种原因,尽管导入了 Foundation,但它不起作用。有没有办法在不在我的 Swift 代码中使用 NS* 类型的情况下解决这个问题?

最佳答案

看起来你不能将可选的字典转换为 NSDictionary。作为解决方法,您可以使用 [String : AnyObject] 并将其设置为 NSNull

NSNull 类定义了一个单例对象,用于表示集合对象中的空值(不允许使用 nil 值)。

关于ios - [String : AnyObject] be an AnyObject, 但 [String : AnyObject? ] 怎么可能不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32357467/

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