我想聲明一個帶有NSMutableArray<Client>
值的字典。 但事情是我得到一個錯誤,這指出我刪除<Client>
部分。Swift 3 - 如何聲明一個類型化的NSMutableArray
如何被用於申報的正確方法類型化的NSMutableArray
我想聲明一個帶有NSMutableArray<Client>
值的字典。 但事情是我得到一個錯誤,這指出我刪除<Client>
部分。Swift 3 - 如何聲明一個類型化的NSMutableArray
如何被用於申報的正確方法類型化的NSMutableArray
你也可以這樣寫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)
}
}
上維沙爾帕特爾的回答快速擴張:
如果粘貼成故事板這一點,將失敗的無客戶端類型
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]
}
}
你不應該使用NSMutableArray
更多,但是你不能達到由參通與NSMutableArray
無論是Client
如果是結構
請使用如下
var myDict = [String : [Client]]()
如果要通過裁判通過,則Client
應該是一個類在您的實現不結構。
如果你想要去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
注:例如我hav Ë加入第一和0指數靜態
希望這是你清楚
你爲什麼要保留基金會(NSStuff一樣的NSMutableArray)的斯威夫特3,而不是使用SWIFT陣列,比如'VAR mydict任何特別的原因:字符串:[客戶]'? – Larme
@ricardo:如果所有你想要實現的是通過引用傳遞,而不是通過使用NSMutableArray傳值,那麼考慮將客戶端轉換爲類而不是結構,並使用Swift數組即可通過引用不傳遞值 –
@Ricardo :在swift中的數組是以Struct的形式實現的。因此,當你創建一個類對象的數組時,它本身就像傳遞值那樣傳遞,這意味着像數組一樣對數組進行任何操作,比如移除對象/插入對象不會被反射回傳遞的數組,而是通過引用傳遞數組中的類對象,數組中任何對象的屬性都將保持並反映在傳遞的數組對象中。 –