Контекстный тип ‘AnyObject’ нельзя использовать с словарем literal multi level dictionary

Я столкнулся с проблемой создания многоуровневого словаря в Swift и следовал некоторым предложениям, представленным здесь:

var userDict:[String:AnyObject]? = ["SystemId": "TestCompany",
                                     "UserDetails" : ["firstName": userDetail.name, "userAddress" : "addressLine1" userDetail.userAdd1]]

Использование [String:AnyObject]?работ для первого уровня дикт, но Swift бросает ту же ошибку на следующем уровне дикт, UserDetail[]. Любые предложения были бы очень признательны

1 ответ

  1. Я не совсем уверен, какие типы userDetail.nameиuserDetail.userAdd1, но если они строки, вы должны позволить ему [String:String]?

    Однако, [String:Any]?должен решить вашу проблему. Если вы уверены, что вы хотите, чтобы это [String:AnyObject]?(я не думаю, что вы хотите), вы можете сделать что-то вроде этого:

    var userDict:[String:AnyObject]? = ["SystemId": "TestCompany" as AnyObject,
                                                "UserDetails" : ["firstName": userDetail.name, "userAddress" : userDetail.userAdd1] as AnyObject]
    

    Надеюсь это помогло.