gpt4 book ai didi

ios - 歧义使用 'mutableCopy()' Swift3

转载 作者:搜寻专家 更新时间:2023-11-01 07:14:14 24 4
gpt4 key购买 nike

我尝试更新 Swift 3,但出现以下错误:

Ambiguous use of 'mutableCopy()'

在更新到 swift 3 之前。它运行良好。

swift 2.3

NSUserDefaults.standardUserDefaults().objectForKey("listsavednews")?.mutableCopy() as! NSMutableArray

swift 3.0

(UserDefaults.standard.object(forKey: "listsavednews")? as AnyObject).mutableCopy() as! NSMutableArray

我发现 Swift3 中的 mutableCopy 返回没有方法 mutableCopy() 的 Any,因此它需要转换为 AnyObject。

任何帮助谢谢。

我不知道为什么我不能发表评论。

谢谢大家,我将使用:

UserDefaults.standard.mutableArrayValue(forKey: "listsavednews")

最佳答案

mutableCopy 是来自 NSObject 的 Objective-C 方法。几乎没有理由在 Swift 3 中使用它。

由于您正在处理 UserDefaultsmutableCopy,因此您必须处理数组或字典。或者它可以是一个字符串。

在 Swift 3 中执行此操作的正确方法是使用正确的 UserDefaults 方法来获取数组或字典。并将结果分配给 var。该组合将为您提供一个可变数组或可变字典。

var someArray = UserDefaults.standard.array(forKey: "somekey")

或:

var someDictionary = UserDefaults.standard.dictionary(forKey: "somekey")

在上述两种情况下,您最终会得到一个可选的,因为给定的键可能没有任何数据。而且您还会得到一个不理想的非特定数组或字典。最好将结果转换为适当的类型。

假设您有一个字符串数组,如果当前用户默认值中没有任何内容,您需要一个空数组。然后你可以这样做:

var someArray = UserDefaults.standard.array(forKey: "somekey" as? [String]) ?? []

如果数组包含 String 以外的内容,则根据需要进行调整。

如果你真的有一本字典,代码会很相似。

var someDictionary = UserDefaults.standard.dictionary(forKey: "somekey") as? [String:String] ?? [:]

如果您的原始对象只是一个字符串,那么您可以这样做:

var someString = UserDefaults.standard.string(forKey: "somekey") ?? ""

关于ios - 歧义使用 'mutableCopy()' Swift3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43131973/

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