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

时间:2017-10-05 09:34:11

标签: ios arrays swift

我想声明一个NSMutableArray<Client>值的字典。 但事情是我收到一个错误,指出我删除了<Client>部分。

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

如何声明类型化的NSMutableArray

的正确方法

5 个答案:

答案 0 :(得分:1)

NSMutableArray是异构容器

答案 1 :(得分:1)

快速扩展 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]
    }
}

答案 2 :(得分:0)

[XmlRoot(ElementName="Position")]
public class Position {
    [XmlElement(ElementName="X")]
    public string X { get; set; }
    [XmlElement(ElementName="Y")]
    public string Y { get; set; }
    [XmlElement(ElementName="Width")]
    public string Width { get; set; }
    [XmlElement(ElementName="Height")]
    public string Height { get; set; }
}

[XmlRoot(ElementName="Dialog")]
public class Dialog {
    [XmlElement(ElementName="Type")]
    public string Type { get; set; }
    [XmlElement(ElementName="Position")]
    public Position Position { get; set; }
}

[XmlRoot(ElementName="Children")]
public class Children {
    [XmlElement(ElementName="Dialog")]
    public Dialog Dialog { get; set; }
}

[XmlRoot(ElementName="UIScheme")]
public class UIScheme {
    [XmlElement(ElementName="Children")]
    public Children Children { get; set; }
}

答案 3 :(得分:0)

您也可以这样写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)
        }
    }

答案 4 :(得分:0)

您不应再使用NSMutableArray,但是如果<{1}} <{1}},则NSMutableArray无法通过参考传递 struct

请使用如下

Client

如果您想通过参考,那么 var myDict = [String : [Client]]() 应该是您的实施中的,而不是 struct

如果您只想使用Client,则需要手动将更新的客户端重新分配给字典

如果 Class (更好的选项)

struct

如果是结构

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

注意:例如,我添加了第一个和0个索引静态

希望你能清楚