簡體   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