Невозможно отсортировать массив в порядке c - PullRequest
0 голосов
/ 21 апреля 2020

Я создал массив, в котором я пытаюсь заставить 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"]
...