我试图在表格视图中显示所有项目名称的列表,但是我的tableview是空的并且没有显示任何内容。我将tableview从我的故事板拖到ProjectViewController类中的tableView IBOutlet。我最终想要从服务器请求数据,但我使用虚拟数据,直到我可以使视图工作。我正在使用swift 3和xcode。
class ProjectViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// MARK: Properties
@IBOutlet weak var tableView: UITableView!
let projectsJson = [
"projects" : [
[
"id": "1",
"name": "Molestiae labore qui ut quam aut provident.",
"summary": "Ut rerum quia similique perferendis reiciendis officiis. Id aliquid possimus sunt suscipit.",
"executive_summary": "Eius ipsa quia enim enim suscipit. Iste dolor ea dolore occaecati ducimus deserunt. Vero fugit omnis dolorem. Perspiciatis quas et commodi aliquam labore consequuntur est eaque.",
"system_scope": "Est eos deleniti perspiciatis cupiditate numquam saepe ut. Laborum consequuntur ullam aperiam magnam. Aliquam nisi ut quia. Consequatur aut molestias vero debitis. Autem id harum asperiores neque sit iusto soluta.",
"proposed_project": "Ut dolores officiis sit ut corporis consequatur. Aliquam enim sapiente fugit aut aspernatur modi qui molestias. Atque aspernatur optio qui temporibus repudiandae. Voluptas libero beatae soluta vel distinctio accusantium. Qui ducimus placeat ut nam dignissimos ut."
],
[
"id": "2",
"name": "Repellat voluptatem ut laboriosam officiis quo error ut.",
"summary": "Ducimus quo esse consequatur sequi suscipit et. Velit maiores maxime ut distinctio. Assumenda et corrupti tempora accusamus dolores et fugiat. Incidunt sapiente nam est eum rerum error. Molestiae velit neque omnis aliquid qui.",
"executive_summary": "Praesentium quae perferendis ipsam sapiente earum. Voluptates accusantium consequatur voluptatum.",
"system_scope": "Eaque sint quis id doloremque voluptas. Mollitia hic velit et et. Id et qui eum non.",
"proposed_project": "Qui qui est sed quod ut vel et. Omnis placeat ea sint alias rerum rerum a aut. Et necessitatibus incidunt incidunt aspernatur est magni. Et non vitae non incidunt nam odio."
],
[
"id": "3",
"name": "Saepe reiciendis excepturi est sequi.",
"summary": "Asperiores rerum laboriosam asperiores aut rerum in dolor. Qui quia et aperiam laborum animi quia.",
"executive_summary": "Aut vero non id nulla voluptatum dignissimos alias. Deserunt sint rem laboriosam consequuntur. Illum molestiae ipsum inventore explicabo.",
"system_scope": "Praesentium numquam aut eveniet neque. Et sed repellat distinctio dolorem. Sit ex doloremque nisi ipsam ullam ut rem. Error molestias consectetur omnis quaerat consequatur sed et.",
"proposed_project": "Veniam expedita rerum voluptas accusantium laudantium aut. Reiciendis architecto optio labore iste rem et. Fuga quasi et et omnis molestias."
],
[
"id": "4",
"name": "Sint provident et aperiam et.",
"summary": "Enim eum amet aspernatur. Et cumque qui nisi. Amet distinctio et ut aut perferendis ea vel. Velit quas nesciunt et quaerat ea ullam culpa. Dolores qui est aut quis est.",
"executive_summary": "Omnis et at exercitationem consequatur quaerat. Sed eligendi modi quibusdam et quo. Nesciunt perferendis officiis modi consequatur. Quas id rerum earum rerum rerum harum.",
"system_scope": "Incidunt ut necessitatibus animi. Id adipisci culpa sed est ut quam asperiores cupiditate. Ut incidunt aperiam libero voluptatem.",
"proposed_project": "Velit quis est vitae nam et delectus pariatur. Deleniti odio nihil quo libero dolorum. Fugiat iusto in dignissimos quisquam enim doloribus illo. Sint suscipit ducimus et totam doloremque optio enim."
],
[
"id": "5",
"name": "Animi velit itaque eligendi est.",
"summary": "Consequatur ea laudantium dicta non asperiores qui sapiente. Est dolor laboriosam nostrum a cupiditate. Ratione nemo eaque ut sit velit.",
"executive_summary": "Ullam ex animi asperiores in laboriosam rem. Repellendus et amet minus voluptas illum. Voluptatem nisi officia accusantium et eum.",
"system_scope": "Corrupti est ad earum dolorum quo. Blanditiis debitis dolorum maxime voluptatum quisquam vitae. Similique repellendus rerum aspernatur sint officiis. Suscipit qui eius autem qui saepe in ut et.",
"proposed_project": "Aut velit a illo nostrum iure temporibus vel. Eos est dignissimos distinctio dignissimos voluptas. Sit tenetur error accusantium voluptatum recusandae aut. Assumenda quod quo sint sed debitis eum."
]
]
]
var projects : [Project] = []
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return projects.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "ProjectCell")
let project = projects[indexPath.row]
cell.textLabel?.text = project.name
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You selected cell #\(indexPath.row)!")
}
override func viewDidLoad() {
super.viewDidLoad()
projects = ProjectWrapper.projectArrayFromJSON(json: projectsJson)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
项目类
class Project{
let name: String
let id: Int
let summary: String
let executiveSummary: String
let systemScope: String
let proposedProject: String
public init?(name: String, id: Int, summary: String, executiveSummary: String, systemScope: String, proposedProject: String) {
self.name = name
self.id = id
self.summary = summary
self.executiveSummary = executiveSummary
self.systemScope = systemScope
self.proposedProject = proposedProject
}
func getName() -> String {
return name;
}
func getId() -> Int {
return id;
}
func getSummary() -> String{
return summary
}
func getExecutiveSummary() -> String{
return executiveSummary
}
func getSystemScope() -> String{
return systemScope
}
func getProposedProject() -> String{
return proposedProject
}
func getUrlExtension() -> String{
return "project/" + String(id)
}
}
class ProjectWrapper{
static func projectArrayFromJSON(json: [String : Any]) -> [Project]{
let jsonProjects = json["projects"] as! [[String: String]]
var projects: [Project] = []
for project in jsonProjects{
let thisProject = Project(name: project["name"]!, id: Int(project["id"]!)!, summary: project["summary"]!, executiveSummary: project["executive_summary"]!, systemScope: project["system_scope"]!, proposedProject: project["proposed_project"]!)
projects.append(thisProject!)
}
return projects
}
}
感谢您的任何建议