Ich habe diese Frage ein paar Mal von Ihnen gesehen, und Sie formulieren es immer noch nicht sehr gut. Aber lass uns sehen, ob ich helfen kann.
Sie versuchen, eine Zeichenfolge in jeder Schaltfläche zu speichern, damit Sie diese Zeichenfolge aus dem barbuttonitem abrufen können.
Sie könnten es ein paar Möglichkeiten.
One: Sie UIBarButtonItem verlängern könnte, geben ihm eine Eigenschaft wie
var day: String?
setzen dann diese Eigenschaft für jede Schaltfläche und den Wert in Ihrer Funktion greifen sparen (bei einem Anteil von es optional ist). Wahrscheinlich wollen Sie das nicht machen, weil Sie alle Barbutton-Elemente erweitern und vielleicht wollen Sie das nicht.
Zwei: Sie könnten ein kleines Wörterbuch machen:
let buttonDays: [UIBarButtonItem: String] = [SundayButton: "Sun",...]
und dann speichern Sie können nur den Tag packen, indem Sie dieses Wörterbuch zugreifen wie so. (Es ist ein optional so, wenn es lässt auspacken)
if let day = buttonDays[sender] {...}
drei: Sie könnten jede Taste einen Tag zuweisen und diesen Tag in einem Wörterbuch, wie oben verwenden.
sundayButton.tag = 0
mondayButton.tag = 1
....
let dayForTag : [Int: String] = [0: "Sun",...]
//then in save function
let day = dayForTag[sender.tag]
Sie müssen nicht ein Wörterbuch oben verwenden, nur ein Array, da es null indiziert ist.
Aber schließlich müssen Sie sich fragen. Warum speichern Sie diese Zeichenfolgen in Ihrem Datenmodell trotzdem? Sie Modell ist es egal, was der Name des Tages ist. Nur ein Mensch weiß das. Und Sie werden den Wert des Wochentags bereits speichern. Dieser Wert kann direkt in einen Wochentag umgewandelt werden, wenn Sie zur Controller-Ebene Ihrer App zurückkehren. Zeichenfolgen sind viel größer als 16 Byte int und Sie erstellen Redundanz in Ihrem Modell, indem Sie beide speichern.
bearbeiten: Anwendungsschicht in Controller umgewandelt. OSI-Modell in meinen Gedanken. Hoppla.
In diesem Fall, alles, was Sie tun müssen, ist ein Tag für jede Taste, 0 für Sonntag, 1 für Montag usw. usw. Zuweisen und speichern Sie dann dieses Tag in Ihrer Datenbank. Wenn Sie auf Aufgaben für einen bestimmten Tag zugreifen müssen, suchen Sie mit der Ganzzahldarstellung dieses Tages und nicht mit der Zeichenfolge.
edit: Ich erinnerte mich gerade daran, dass ich glaube, Sonntag ist tatsächlich weekDay eins in Date() Objekte, also müssten Sie dafür verantwortlich sein. Ich denke. Schon eine Weile her, seit ich es benutzt habe.
Möglicherweise müssen Sie dies in kleinere Teile aufteilen. Ich verstehe nicht, was du zu tun versuchst. Wir werden eher in der Lage sein, Ihnen zu helfen, kleine individuelle Codierungsaufgaben zu lösen, nicht eine große konzeptionelle Aufgabe. – Frankie
@Frankie, siehe bearbeitete Frage – Coder221
Was hat das mit Core Data zu tun? – matt