我正在使用Swift通过其init()方法创建一个NSObject,传入字符串和一个Dictionaries数组(Dictionaries代表UIButtons,每个都有一个标题,一个链接,每个潜在按钮的模糊 - 可以来自这些按钮的1-3个。)
在ContentItem()的init()方法中,我正在尝试将Dictionaries创建为此对象的属性。
它给了我一个错误:“实例成员'下标'不能在类型上使用”(String:String)“:var tempButton = [String:String] []”。
我做了一些研究,听起来可能是在init()方法中实例化变量 - 因为这是在创建对象之前?
这是对的吗?有人对此有任何见解吗?有没有办法将这些传递给参数传递给类?我被卡住了。感谢。
class ContentItem: NSObject {
var title: String
var body: String
var buttonsArray: Array<Dictionary<String,String>>
init?(title: String, body: String, buttonsArgs: Array<Dictionary<String, String>>) {
self.title = title
self.body = body
for btn in buttonsArgs {
var tempButton = [String: String][] // placeholder for the button we are creating to attach to buttonsArray[]
for (btnKey, btnValue) in btn { // iterate through each button's Dictionary element that is passed in to init()
print("btnKey: \(btnKey), btnValue: \(btnValue)")
tempButton[btnKey] = btnValue // assembling the parameters of this button
}
self.buttonsArray.append(tempButton) // assigning the buttons to the object
}
super.init()
}
}
答案 0 :(得分:2)
函数调用始终使用( )
,而不是[ ]
:
var tempButton = [String: String]()
相当于:
var tempButton: Dictionary<String, String> = Dictionary<String, String>.init()
您正在尝试追加不存在的数组:
var buttonsArray: Array<Dictionary<String,String>>
该行声明名为buttonsArray
的变量将存在,类型为Array<Dictionary<String,String>>
,但它没有为其定义任何值。改为将其改为:
var buttonsArray: Array<Dictionary<String,String>> = Array<Dictionary<String,String>>()
现在发生了初始化,编译器可以为我们推断出类型:
var buttonsArray = Array<Dictionary<String,String>>()
我们可以使用Array<Dictionary<String,String>>
,[[String : String]]
;
var buttonsArray = [[String : String]]()