Я создал массив, в котором я пытаюсь заставить Swift сортировать в порядке возрастания, но я также ожидаю, что код при запуске отобразит мои файлы в указанном мной порядке.
Ниже приведен мой код, в котором я сказал Swift загружать файлы с префиксом «nssl» в произвольном порядке.
Как было рекомендовано, я переместил функцию вызова в viewDidLoad, в результате чего код создается, пока я не изменил забавный вызов c.
Я собираюсь запустить некоторые симуляции на игровых площадках при чтении https://docs.swift.org/swift-book/LanguageGuide/Closures.html# // apple_ref / doc / uid / TP40014097-CH11-ID95 , чтобы увидеть, как далеко я могу пройти.
Спасибо всем!
//
// ViewController.swift
// hws_project1
//
// Created by mojo on 15/04/2020.
// Copyright © 2020 m. All rights reserved.
//
import UIKit
class ViewController: UITableViewController {
var pictures = [String]()
override func viewDidLoad() {
super.viewDidLoad()
title = "Storm Viewer"
navigationController?.navigationBar.prefersLargeTitles = true
let fm = FileManager.default
let path = Bundle.main.resourcePath!
let items = try! fm.contentsOfDirectory(atPath: path)
for item in items {
if item.hasPrefix("nssl"){
// this is a pic to load
pictures.append(item)
}
}
//this should order the pics in ascending order but doesnt work
//picturesArray.sort(by: > )
picturesArray = pictures.sorted(by: { (pic1: nssl0049.jpg , pic2: nssl0046.jpg ) -> Bool in
return pic1 > pic2
})
}
// How many rows should appear in the table
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return pictures.count
}
// What each row should look like
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Picture", for: indexPath)
cell.textLabel?.text = pictures[indexPath.row]
return cell
}
// 1. try loading the vc
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let vc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController {
// 2. set its selectedImage property
vc.selectedImage = pictures[indexPath.row]
// 3. push it on the navigation controller
navigationController?.pushViewController(vc, animated: true)
}
}
// Array of pics listed in the Content folder
var picturesArray = ["nssl0049.jpg", "nssl0046.jpg", "nssl0091.jpg", "nssl0045.jpg", "nssl0051.jpg", "nssl0041.jpg", "nssl0042.jpg", "nssl0043.jpg", "nssl0033.jpg", "nssl0034.jpg"]
}
Код здесь - это массив, который я создал.
// Array of pics listed in the Content folder
var picturesArray = ["nssl0049.jpg", "nssl0046.jpg", "nssl0091.jpg", "nssl0045.jpg", "nssl0051.jpg", "nssl0041.jpg", "nssl0042.jpg", "nssl0043.jpg", "nssl0033.jpg", "nssl0034.jpg"]