У меня есть словарь структуры данных, как показано ниже, и я пытаюсь сгруппировать их в моем TableViewController таким образом, что группа А отображает MyData, который начинается с заголовка = A и в то же дисплей времени разделIndexTitlesForTableView с доступными буквами, полученными от заголовка.группы и сортировки словаря данных в TableViewController с Swift
[Это мой, что я хочу достичь]
Я пытался отказаться от всех первых букв из названия элемента в моем словаре, и сохранить их в наборе, используя приведенный ниже код но когда я запускаю свое приложение, я получаю результаты, дублированные в моей таблице.
Я совершенно новый и быстрый, и буду рад, что вы будете руководствоваться тем, как этого добиться.
Вот мой словарь данных:
var data: [[String:AnyObject]] =
[
[
"id": "1",
"title": "A Title",
"alphabet": "A",
"Detail": "This is a String"
],
[
"id": "2",
"title": "A Title Again",
"alphabet": "A",
"Detail": "This is a String"
],
[
"id": "3",
"title": "B Title",
"alphabet": "B",
"Detail": "This is a String"
],
[
"id": "4",
"title": "B Title Again",
"alphabet": "B",
"Detail": "This is a String"
]
]
И вот моя попытка:
class Index: UITableViewController {
var MyData = data
var letters = Set<String>()
override func viewDidLoad() {
super.viewDidLoad()
for element in MyData {
var title = element["title"] as? String
let letter = title?.substringToIndex(advance(title!.startIndex, 1))
letters.insert(letter!)
}
MyData = MyData.sort { element1, element2 in
let title1 = element1["title"] as? String
let title2 = element2["title"] as? String
return title1 < title2
}
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return letters.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.MyData.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell?
cell!.textLabel?.text = (MyData[indexPath.row]["title"] as! String)
return cell!
}
Большое спасибо за ответ.Я бы хотел, чтобы вы руководствовались в отношении моего кода, чтобы я лучше понял. Я просто полный Начинающий в Свифте. – youngbobby
Ваш код не может работать таким образом, и это слишком сложно, чтобы обеспечить решение на основе вашего кода. Я отправлю полное решение – vadian