ios - 字符串不可转换为 DictionaryIndex<String, AnyObject>

标签 ios swift

我有一个循环遍历包含字符串或字典的数组并为类型为 [String:AnyObject] 的新字典设置值的函数,使用原始数组中的值作为键。 sections是一组自定义 Section对象及其方法 getValue总是返回 String .

func getSectionVariables() -> [String:AnyObject] {
    var variables = [String:AnyObject]()

    for section in sections {
        if let name = section.name as? String {
            variables[name] = section.getValue()
        } else if let name = section.name as? [String:String] {
            for (k, v) in name {
                if variables[k] == nil {
                    variables[k] = [String:String]()
                }

                if var dict = variables[k] as? [String:String] {
                    dict[v] = section.getValue() //This works, but of course copies variables by value and doesn't set variables[k] 
                }

                (variables[k] as? [String:String])![v] = section.getValue() //Can't get this line to compile
            }
        }
    }

    return variables
}

如果我尝试投 variables[k]作为[String:String] ,编译器坚持 String is not convertible to DictionaryIndex<String, AnyObject> .我不确定为什么向下转换不起作用以及为什么编译器认为我正在尝试使用备用字典下标语法。

请注意,该项目使用的是 Swift 1.1。

最佳答案

普遍的问题是“转换表达式”不会产生“左值”,因此无法分配给它。例如,考虑以下代码的简化版本:

var x = "initial"
var y : AnyObject? = x
(y as? String) = "change"

你会在最后一行得到一个错误,因为你不能赋值给一个“cast expression”。

关于ios - 字符串不可转换为 DictionaryIndex<String, AnyObject>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080713/

相关文章:

ios - iOS6 中的任何 api 获取 gps 位置的静态 map 图像

ios - CoreData 并发问题

ios - 如何绘制渐变填充弧,即彩虹?

ios - DynamicCastClassUnconditional 与 destionationViewController

ios - Swift 中的 EXC_BREAKPOINT

ios - 将 MPMediaItem 添加到 MPMediaItemCollectino

Swiftui Eventkit - 为特定日期创建事件

ios - 应用程序在后台时来自 iOS 推送通知操作的 Http 请求

ios - 为什么 CGContextSetShadowWithColor 也改变了当前的填充颜色?

ios - 将 REST URL 模式映射到 Siesta 框架的模型对象的最佳方法是什么?