Я пытаюсь создать представление, в котором я могу вводить текст в UITextField и сохранять его на устройстве. Я искал разные места и до сих пор получил это ниже, но я не могу пройти мимо этой ошибки. Может кто-нибудь помочь?
Use of unresolved identifier 'yyyytoss'
import UIKit
class WritestoryVC: UIViewController, UITextViewDelegate {
@IBOutlet weak var myStory : UITextView!
@IBAction func saveImageToDocumentDirectory(_ chosenImage: UITextField) -> Void {
let directoryPath = NSHomeDirectory().appending("/Documents/")
if !FileManager.default.fileExists(atPath: directoryPath) {
do {
try FileManager.default.createDirectory(at: NSURL.fileURL(withPath: directoryPath), withIntermediateDirectories: true, attributes: nil)
} catch {
print(error)
}
}
let filename = NSDate().string(withDateFormatter: yyyytoss).appending(".rtf")
let filepath = directoryPath.appending(filename)
let url = NSURL.fileURL(withPath: filepath)
do {
try UITextField(chosenImage, 1.0)?.write(to: url, options: .atomic)
return String.init("/Documents/\(filename)")
} catch {
print(error)
print("file cant not be save at path \(filepath), with error : \(error)");
return filepath
}
}
}
1. Не используйте NSHomeDirectory()
в iOS. Есть правильные способы получить ссылку на папку «Документы» приложения. 2. Не используйте NSDate
в Swift, используйте Date
. Не используйте NSURL
, используйте URL
. 3. Большая часть кода построения вашего пути неверна.
Если это тот формат даты, который вам нужен, попробуйте yyyytoss
в двойных кавычках "yyyytoss"
, так как это формат и ожидает строковое значение.
@TheTiger "yyyytoss"
не является допустимым форматом даты.
... и создание Documents
в домашней папке излишне. Не делай этого. Это одна из стандартных папок. Прочтите сообщение об ошибке. Это довольно ясно. Где заявлен yyyytoss
?
@rmaddy Да, но я предполагаю, что это будет похоже на "2018to59"
. Хотя очень непонятно, что он хочет делать :)
@rmaddy Только что попробовал, это всего лишь год.
@TheTiger Вот почему я сказал, что это неверно. Если «к» является буквальным текстом, его необходимо заключить в кавычки: "yyyy'to'ss"
. Но если учесть год, то слово «до», за которым следуют секунды, вообще не имеет смысла.
извините, если это не ясно, я искал способ создать и сохранить текстовый файл rtf через viewcontroller, который использует uitextfield и кнопку создания истории .... но похоже, что этот код устарел
Посмотрите, поможет ли это: -
Также там, где вы определяете константу yyyytoss, она должна иметь вид «yyyy-MM-dd».
let file = "file.txt" //this is the file. we will write to and read from it
let text = "some text" //just a text
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let fileURL = dir.appendingPathComponent(file)
//writing
do {
try text.write(to: fileURL, atomically: false, encoding: .utf8)
}
catch {/* error handling here */}
//reading
do {
let text2 = try String(contentsOf: fileURL, encoding: .utf8)
}
catch {/* error handling here */}
}
Что такое
yyyytoss
в линейкеNSDate().string(withDateFormatter: yyyytoss).appending(".rtf")
? Вы это где-нибудь заявляли? А не получаетсяUITextField(chosenImage, 1.0)
? Вы используете стороннюю библиотеку? Также заголовок вашего вопроса не совпадает с вашим кодом.