2016-11-30 3 views
0

ich TimeInterval habe ich hatte es in ein String zu drehen, so könnte es zu den Dictionary hinzugefügt werden, die von Apple-Uhr auf dem iPhone über WatchConnectivity geben wird.TimeInterval auf String <del> String Um Zeitintervall</del>

Nun, da ich die String auf dem iPhone haben , ich brauche, um ihn wieder in einen TimeInterval, aber ich kann nicht scheinen, um das herauszufinden.

(Ich brauche dies in einer UILabel anzuzeigen, die die Dauer der Trainingseinheit zeigt.)

Irgendwelche Ideen?

Für Beispiel

Uhr:

00.15.15 (Stunden, Minuten, Sekunden) verwandelt sich in "915,012948989868"

let myDouble = computeDurationOfWorkout(withEvents: hkWorkout?.workoutEvents, startDate: hkWorkout?.startDate, endDate: hkWorkout?.endDate) 
    let myDoubleString = String(myDouble) 
    durationVariableString = myDoubleString 

iPhone:

Notwendigkeit, "915.01294898 9868 "zurück in 00:15:15

+0

Wie wäre es damit: http://stackoverflow.com/questions/26794703/swift-integer-conversion-to-hours-minutes-seconds – toddg

+0

Ihre Frage ist sehr verwirrend. Es scheint, dass Sie bereits Code haben, um ein 'TimeInterval' in einen String im Format hh: mm: ss zu konvertieren. Es scheint, dass Sie bereits Code haben, um die Zeichenfolge zurück in ein 'TimeInterval' (double) zu konvertieren. Um was genau bitten Sie um Hilfe? – rmaddy

+0

@toddg Ich werde diesen Link überprüfen, danke! – SRMR

Antwort

2

calendar.dateComponents verwenden Sie können 915 konvertieren 00:15:15

func stringFromTimeInterval (interval: String) -> String { 
     let endingDate = Date() 
     if let timeInterval = TimeInterval(interval) { 
      let startingDate = endingDate.addingTimeInterval(-timeInterval) 
      let calendar = Calendar.current 

      var componentsNow = calendar.dateComponents([.hour, .minute, .second], from: startingDate, to: endingDate) 
      if let hour = componentsNow.hour, let minute = componentsNow.minute, let seconds = componentsNow.second { 
       return "\(hour):\(minute):\(seconds)" 
      } else { 
       return "00:00:00" 
      } 

     } else { 
      return "00:00:00" 
     } 
    } 
+0

Danke für die Antwort! Dies ist nicht ganz genau passgenau, da ich eine "String" als Argument übergeben muss, kein "TimeInterval" als Argument. Und dann muss ich ein 'TimeInterval' zurückgeben, anstatt eine' String' zurückzugeben. Irgendwelche Gedanken? – SRMR

+0

Sie benötigen eine Funktion, in der Sie 00:15:15 übergeben und 915 zurückgeben? – Rajat

+0

Eine Funktion, wo ich eine "String" übergeben 915.012948989868 ", und erhalten ein' TimeInterval' "00:15:15". Wie 'func timeIntervalFromString (String: String) -> TimeInterval' oder etwas? – SRMR

1

Anstatt das Zeitintervall in eine Zeichenfolge umzuwandeln, wandeln Sie es stattdessen in eine NSNumber um, die dem Wörterbuch hinzugefügt werden kann. Ein NSTimeInterval ist einfach ein Double, also können Sie es einfach zu einem Double rotieren.

let timeInterval: TimeInterval = 915.012948989868 

let dict = ["TimeIneterval": NSNumber(value: timeInterval)] 

if let extractedTimeInterval: TimeInterval = dict["TimeIneterval"] as? TimeInterval { 

    print(extractedTimeInterval) 
} 
+0

Danke für die Antwort! Ich werde es versuchen. Sobald ich die "NSNumber" über das Wörterbuch an das iPhone übergeben habe, sobald ich die 'NSNumber' auf dem iPhone habe, müsste ich es nur zurück in ein' TimeInterval' dann konvertieren? – SRMR

Verwandte Themen