2016-12-05 3 views
0

Ich habe ein Textfeld, 7 Tasten in ViewcontrollerWie ordnen Sie Wochentage den Tasten zu?

@IBOutlet weak var courseDesc: UITextField! 

@IBOutlet weak var sundayButton: UIButton! 
@IBOutlet weak var mondayButton: UIButton! 
@IBOutlet weak var tuesdayButton: UIButton! 
@IBOutlet weak var wednedayButton: UIButton! 
@IBOutlet weak var thursdayButton: UIButton! 
@IBOutlet weak var fridayButton: UIButton! 
@IBOutlet weak var saturdayButton: UIButton! 

Wie diese 7 Wochentag unten bis 7 Tasten zum Beispiel oben, zuweisen, wenn der Benutzer sundayButton klickt, sollte es als Sunday zugeordnet werden, wenn der Benutzer es spart .

func getWeekDay() -> [String] { 
    let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)! 
    calendar.locale = NSLocale.current as Locale 
    return calendar.weekdaySymbols 
} 

var assignDay = getWeekDay() 

let sunday = assignDay[0] 
let monday = assignDay[1] 
let tuesday = assignDay[2] 
let wednesday = assignDay[3] 
let thursday = assignDay[4] 
let friday = assignDay[5] 
let saturday = assignDay[6] 
+0

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

+0

@Frankie, siehe bearbeitete Frage – Coder221

+0

Was hat das mit Core Data zu tun? – matt

Antwort

3

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.

+0

Ich stimme Ihrer Schlussfolgerung zu. –

+0

Schätzen Sie Ihr Verständnis für mein Problem. Jetzt bekomme ich es komplett :) – Coder221

Verwandte Themen