我正在尝试用数组中的数据填充tableView,但是当我尝试将Cell的文本分配给数组中的项目时,却不断出现错误:
无法将类型为'String.Type'的值分配为类型为'String?
这是我目前的代码,我尝试了其他几种方法,但这似乎是最接近的一种。
class ContactViewController: UIViewController, UITableViewDataSource {
var contact:[Contacts]=[]
struct Contacts {
let name = String.self;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
let contacts = contact[indexPath.row]
cell.textLabel?.text = contacts.name //This is where I get the error
return cell
}
}
答案 0 :(得分:2)
当您输入“ =”时,您将分配一个值,因此在编写时
let name = String.self
您正在将String类型分配给name。如果要声明变量的类型,则应使用分号;
struct Contact {
var name: String
}
如果您很快想用仅用于测试的数据填充数组,则可以编写:
struct Contact {
var name: String
}
class ContactViewController: UIViewController, UITableViewDataSource {
var contacts = [
Contact(name: "First Contact"),
Contact(name: "Second Contact"),
Contact(name: "Third Contact")
]
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
let contact = contacts[indexPath.row]
cell.textLabel?.text = contact.name //This is where I get the error
return cell
}
}
答案 1 :(得分:0)
您没有显示如何填充Contacts
的数组,但是未正确声明该结构。
大概您想要一个包含名称作为字符串的结构。可以这样声明:-
struct Contacts
{
let name : String
}
或者如果需要变量,则使用name
而不是var
声明的let
。