我想声明一个NSMutableArray<Client>
值的字典。
但事情是我收到一个错误,指出我删除了<Client>
部分。
var mydict: [String:NSMutableArray<Client>] = [:]
如何声明类型化的NSMutableArray
的正确方法答案 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个索引静态
希望你能清楚