object-C style
@interface TestViewController:UIViewController{
NSArray *dataList;
}
@end
@implementation TestViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSDictionary *dict1 =[[NSDictionary alloc] initWithObjectsAndKeys:@"32",@"age",@"andy",@"name", nil];
NSDictionary *dict1 =[[NSDictionary alloc] initWithObjectsAndKeys:@"34",@"age",@"smith",@"name", nil];
NSDictionary *dict1 =[[NSDictionary alloc] initWithObjectsAndKeys:@"27",@"age",@"jonathan",@"name", nil];
dataList = [[NSArray alloc]initWithObjects:dict1,dict2,dict3,nil];
}
@end
我想在Swift中使用相同的代码
所以我输入了如下的快捷风格
class ViewController: UIViewController {
var datalist = [Dictionary]() //Compile Error -> "Missing argument for parameter #1 in call"
// I can't understand error. What does it mean?
override func viewDidLoad() {
super.viewDidLoad()
let dict1 = ["age":"32","name":"andy"]
let dict2 = ["age":"34","name":"smith"]
let dict3 = ["age":"27","name":"jonathan"]
datalist = [dict1,dict2,dict3] //Compile Error -> 'ViewController' does not have a member named 'datalist'
}
}
但是2错误
我不知道为什么会出现错误
你能帮助我吗?
答案 0 :(得分:3)
swift中的数组不带参数,只需通过将数组设置为[]
(带或不带值)来创建一个参数,例如:
var array : [Int] = []
var array2 = [1,2,3]
会创建一个整数数组。
此外,swift中的字典需要知道键和值的类型,例如:
Dictionary<String, String>
但是也有创建字典的简写:
[String:String]
(假设String是键和值的类型)。
因此,对于您的示例,您可以重写您的datalist对象以声明为:
var datalist : [[String:String]] = []
然后,您可以按照使用方式使用datalist对象,或者将[String:String]
个对象附加到该对象上。