gpt4 book ai didi

swift 2 : Cannot convert value of type '[NSObject : AnyObject]' to expected argument type '[String : AnyObject]'

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:40 24 4
gpt4 key购买 nike

我有一个用 Swift 1 构建的项目。但是在自动转换为 Swift 2 后,它显示错误:无法将类型 '[NSObject : AnyObject]' 的值转换为预期的参数类型 '[String : AnyObject]'。函数代码:

func createViewContainers() -> NSDictionary {

var containersDict = NSMutableDictionary()
let itemsCount : Int = tabBar.items!.count as Int - 1

for index in 0...itemsCount {
var viewContainer = createViewContainer()
containersDict.setValue(viewContainer, forKey: "container\(index)")
}

var keys = containersDict.allKeys

var formatString = "H:|-(0)-[container0]"
for index in 1...itemsCount {
formatString += "-(0)-[container\(index)(==container0)]"
}
formatString += "-(0)-|"
var constranints = NSLayoutConstraint.constraintsWithVisualFormat(formatString,
options:NSLayoutFormatOptions.DirectionRightToLeft,
metrics: nil,
views: (containersDict as [NSObject : AnyObject]!) as [NSObject : AnyObject]!)
view.addConstraints(constranints)

return containersDict
}

最佳答案

您不能总是做一个简单的自动转换就完成了。通常会有一些自动转换器无法识别的代码,并且会不理会它或用它做一些奇怪的事情。在这种情况下,它是将 NSMutableDictionary 转换为 Swift 字典。

NSLayoutConstraint.constraintsWithVisualFormat 的参数views 接受[String: AnyObject] 的字典。所以这意味着您必须传入一个 [String: AnyObject] 字典。

改变这个非常奇怪的转换:

views: (containersDict as [NSObject : AnyObject]!) as [NSObject : AnyObject]!)

为此:

views: containersDict as! [String: AnyObject]

关于 swift 2 : Cannot convert value of type '[NSObject : AnyObject]' to expected argument type '[String : AnyObject]' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969618/

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