繁体   English   中英

Swift 3-如何声明类型化的NSMutableArray

[英]Swift 3 - How declare a typed NSMutableArray

我想用NSMutableArray<Client>值声明一个字典。 但是问题是我遇到了错误,指出我删除了<Client>部分。

var mydict: [String:NSMutableArray<Client>] = [:]

如何正确声明类型化的NSMutableArray

NSMutableArray是一个异构容器

快速扩展Vishal Patel的答案:

如果将其粘贴到情节提要中,则不会在任何客户端类型上失败

import UIKit
import PlaygroundSupport

struct Client
{

}

struct NoneClient
{

}

class MyViewController : UIViewController {

    var mydict: [String:[Client]] = [:]

    override func loadView() {
        let client = Client()
        mydict["xyz"] = [client]

        let noneClient = NoneClient()

        mydict["abc"] = [NoneClient]
    }
}
var myDict = [String : [Client]]()

您也可以像这样写var mydict: [String:[Client]] = [:]

你可以这样

import UIKit
import PlaygroundSupport

    struct Client
    {

    }
    class MyViewController : UIViewController {

        var mydict: [String:[Client]] = [:]

        override func loadView() {
            let client = Client()
            mydict["xyz"] = [client]
            print(mydict)
        }
    }

您不应该再使用NSMutableArray ,但是,如果它是struct ,则无法使用NSMutableArray Either for Client通过ref传递

请如下使用

 var myDict = [String : [Client]]()

如果要通过ref传递,则Client应该是实现中的而不是struct

如果只想使用struct则需要手动将更新的Client`重新分配给字典

如果是班级 (更好的选择)

(myDict["key1"] as! [Client]).firstName = "Jon"

结构的情况下

    var clientObjArray =  (myDict["key1"] as! [Client])
    var clientObjArrayFirstObj =  clientObjArray.first
    clientObjArrayFirstObj?.name =  "Jon"
    clientObjArray.remove(at: 0)
    clientObjArray.insert(clientObjArrayFirstObj!, at: 0)
    myDict["key1"] = clientObjArray

注意:例如,我添加了first和0 Index static

希望你明白

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM