Итак, я пытаюсь изучить Swift 3 в XCode 8. И я следил за некоторыми учебниками, и я пытаюсь создать собственное приложение, которое позволит мне сохранить событие с дату и категорию.Сохранить дату на основные данные
Прямо сейчас мне трудно найти дату для основных данных. Кроме того, я хотел бы отобразить полный datestyle в поле UITextfield, но сохраните его в виде коротких датестилей в основных данных.
У кого-нибудь есть решение для этого? И, пожалуйста, обратите внимание, что я n00b, я не нахожусь во всем правильном жаргоне. Поэтому, пожалуйста, покажите мне, что мне нужно изменить, поскольку я все еще изучаю, что все разные вещи ...
Что я должен делать, это сделать функцию, которая будет форматировать строку для сохранения с помощью (атрибут 'dateOfEvent' объекта 'MyEvents' установлен на 'date'), а затем вызывает его из функции datePickerChanged, чтобы он постоянно обновлялся.
Я пришел к этому до сих пор, это смесь из разных учебников, которые я нашел.
import UIKit
class addEventViewController: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var addEventNameInput: UITextField!
@IBOutlet weak var addEventDateInput: UITextField!
@IBOutlet weak var addEventCategoryInput: UITextField!
var addEventCategories = ["Født", "Startede børnehave", "Startede uddannelse", "Startede job", "Flyttede hjemmefra", "Startede romantisk forhold", "Startede forhold"]
var categoryPicker = UIPickerView()
let datePicker = UIDatePicker()
func textFieldDidBeginEditing(_ textField: UITextField) {
addEventDateInput.inputView = datePicker
datePicker.datePickerMode = .date
datePicker.addTarget(self, action: #selector(datePickerChanged), for: .valueChanged)
}
func datePickerChanged(sender: UIDatePicker) {
let formatter = DateFormatter()
formatter.dateStyle = .full
formatter.timeStyle = .none
addEventDateInput.text = formatter.string(from: sender.date)
}
override func viewDidLoad() {
super.viewDidLoad()
addEventNameInput.delegate = self
addEventDateInput.delegate = self
categoryPicker.delegate = self
categoryPicker.dataSource = self
addEventCategoryInput.inputView = categoryPicker
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
// returns the number of 'columns' to display.
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
// returns the # of rows in each component..
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return addEventCategories.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
addEventCategoryInput.text = addEventCategories[row]
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return addEventCategories[row]
}
@IBAction func addEventButtonPressed(_ sender: Any) {
if addEventNameInput.text == "" {
} else {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let newevent = MyEvents(context: context)
newevent.nameOfevent = addEventNameInput.text!
newevent.categoryOfevent = addEventCategoryInput.text!
// Save data to coredata
(UIApplication.shared.delegate as! AppDelegate).saveContext()
// Pop back to events list
navigationController!.popViewController(animated: true)
}
}
}
Итак, у вас есть 'NSManagedObject' под названием' dateOfEvent' как часть 'MyEvents', правильно? Вы должны иметь возможность установить значение независимо от текущей даты с вашим datePicker, произнеся «new event.dateOfEvent = datePicker.date» – Pierce
Спасибо, Пирс! Это сохраняет дату, однако это также экономит время. И я хочу только дату :-) – Polle
@Polle нет «даты только». Сохраните фактические даты в своей базе данных и используйте форматы даты, чтобы отобразить эти значения для пользователя. – jrturton