SWIFT konvertiert NSTimeInteval in NSDate

8

Ich habe ein Objective-C-Tutorial verfolgt, und der Tutor kann ein NSTimeInterval-Objekt in ein NSDate-Objekt umwandeln.

Die Lektion verwendet CoreData und speichert das Datum eines Posts als NSTimeInterval. Später möchten wir dieses Intervall abrufen und es als formatierten Datums-String setzen, um es als Abschnittstitel in einem UITableViewController darzustellen.

%Vor%

Hauptsächlich mit der Linie beschäftigt:

%Vor%

Im Moment wird das gesetzte Datum tatsächlich dem aktuellen Datum hinzugefügt, und dies ist nicht das Verhalten, das ich möchte.

Wie kann ich die self.date -Variable auf ein NSDate -Objekt in SWIFT übertragen?

    
Alex 24.11.2014, 18:09
quelle

2 Antworten

15

Es gibt ein initializer von NSDate , das NSTimeInterval benötigt:

%Vor%

Also mach einfach:

%Vor%     
Peter Pei Guo 24.11.2014, 18:16
quelle
2

Dieser Code ist wirklich verwirrt.

Ein Zeitintervall ist kein Datum. Ein Datum ist ein Zeitpunkt. Ein Zeitintervall ist die Differenz in Sekunden zwischen zwei Zeitpunkten. Wann immer Sie ein Zeitintervall haben, haben Sie die Frage "Es ist die Anzahl der Sekunden zwischen zwei Daten? Sie erkennen richtig, dass das Hinzufügen eines Zeitintervalls in einer Datenbank NSDate () ist unwahrscheinlich, ein nützliches Ergebnis, weil das gleiche zu geben Anruf, der 10 Sekunden später ausgeführt wird, gibt ein anderes Datum.

Das Datum eines Posts sollte höchstwahrscheinlich als NSDate-Objekt gespeichert werden. Core Data behandelt NSDate-Objekte gut. Wenn Sie Zeitintervalle speichern möchten, muss das Datum des Posts in ein Zeitintervall seit einem festen Referenzdatum konvertiert werden. Sie tun das zum Beispiel mit "timeIntervalSinceReferenceDate". Wenn Sie das tun, empfehle ich sehr, dass Sie nicht die Variable "date" aufrufen, sondern etwas wie "secondsReceferenceDate", was deutlich macht, was Sie speichern müssen, wenn Sie ein Datum erhalten und wie Sie diese Zahl in ein NSDate konvertieren .

(Der Grund dafür, es "secondsReferenceDate" zu nennen, ist, weil es viel Code gibt, der Millisekunden oder Nanosekunden speichert, und es gibt viel Code, der Intervalle seit der Epoche speichert (1. Januar 1970), also ist es wirklich gut wenn jemand, der Ihren Code liest, sofort weiß, was die Zahlen bedeuten, indem er einfach den Variablennamen anschaut).

    
gnasher729 25.11.2014 11:29
quelle

Tags und Links