#ios #swift #text-files
#iOS #swift #текстовые файлы
Вопрос:
Как выполнить печать только выбранных строк из вашего текстового файла в зависимости от того, какая кнопка нажата.
Поэтому, если нажать кнопку один, строка 4 текста из моего текстового файла будет напечатана в UILabel.
Прямо сейчас он печатает весь файл.
@IBOutlet weak var AboutLabel: UILabel!
@IBAction func GetAboutInfo(_ sender: UIButton) {
if let path = Bundle.main.path(forResource: "Meditations", ofType: "txt") {
if let text = try? String(contentsOfFile: path,
encoding: String.Encoding.utf8) {
AboutLabel.text = text
}
}
}
Хотелось бы, чтобы он печатал только строку текста, которую я отправляю, в зависимости от того, какая кнопка нажата на предыдущем экране.
Комментарии:
1. После загрузки файла вам нужно будет выполнить синтаксический анализ в соответствии с вашими потребностями
2. Текстовый файл — плохой выбор. Поместите строки текста в список (либо массив, либо словарь в зависимости от ваших потребностей) или, если файл достаточно большой, поместите данные в базу данных, чтобы вам не нужно было загружать все в память только для получения одной строки текста.
Ответ №1:
Вы можете разделить текст в соответствии с вашими требованиями, здесь я предполагаю, что строки разделены разрывом строки n
Кроме того, было бы лучше загрузить вашу строку один раз вне метода
И, как было предложено @rmaddy, лучшим вариантом было бы .plist
let meditationsPath = Bundle.main.path(forResource: "Meditations", ofType: "txt")!
let meditationText = try String(contentsOfFile: meditationsPath,
encoding: String.Encoding.utf8)
let meditationTextArray = meditationText.split(separator: "n")
Ваш getAboutInfo
станет
// Name your methods and variables with camel case
@IBAction func getAboutInfo(_ sender: UIButton) {
// Assign the button tag for index
let index = sender.tag
if index < meditationTextArray.count {
let text = meditationTextArray[index]
self.aboutLabel.text = text
}
}