2017-04-21 4 views
0

키, 값 쌍을 선택하는 데 사용되는 표보기를 원합니다. 표는 여러 용도로이 가능한 다시, 그러나 여기 클래스와 학생들를 사용하는 예입니다됩니다표제 선택보기를 만드는 가장 효율적인 방법은 swift 및 IOS에 있습니다.

11A/It 
4125:John 
5121:Ben 
6121:Anna 
4125:Gemma 
10B/It 
5121:Ben 
6121:Anna 
4125:Gemma 
4512:Kevin 

클래스 이름은 제목입니다 - 그들은 선택할 수 없습니다. 학생들은 선택 가능하며, 테이블 뷰는 프로토콜을 통해 키와 값을 모두 되돌려줍니다.

var data = [[String:[[String:String]]]() 
:

var data = [String:[String:String]() 
// Causes problems, because dictionaries have no order 

그래서 나는 배열로 사전을 켤 수 있다고 생각 :

은 무엇 중요하다,이 모두가 내 첫 번째 시도가 정말 작동하지 않습니다 즉, 순서에 남아있다 는

이 섹션의 번호를 나를 수 있지만 그때는 행의 수를 얻는 방법을 알아낼 수 없습니다 :

func numberOfSections(in tableView: UITableView) -> Int { 
    return data.count 
} 
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return data[section].first.count // Nope! 
} 
을 0

그래서 나는 최선의 접근에 대한 일반적인 조언을 찾고 있다고 생각합니다. 나는이 주위에 두 가지 방법으로 볼 수 있습니다

  1. 별도로 제목과 데이터의 배열을을, 그래서 나는 다음
  2. 사용자 지정 키를 만듭니다 데이터 [제목 [섹션]`같은 [행]을 수행 할 수 있습니다 값을 유형을 입력하고 그 작업을 수행하십시오.

나는이 문제를 해결하기 위해 표준으로 받아 들인 방법이 있다고 생각합니다. 우연히 만나는 것이 꽤 흔한 일 인 것 같습니다. 미리 많은 감사드립니다!

답변

1

나는 추상적 인 사전이 아닌 데이터를 담을 수있는 구조체를 만들 것이다. 예를 들어

struct ClassData { 
    let title: String 
    let students: [Student] 
} 

struct Student { 
    id: Int 
    name: String 
} 


let tableData = [ClassData]() 

func numberOfSections(in tableView: UITableView) -> Int { 
    return tableData.count 
} 
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return tableData[section].students.count 
} 
관련 문제