2017-08-22 16 views
1

これは私のコードです。 todayStringとnextStringをユーザーのデフォルトで保存して、火曜日ではないときにラベルに保存された日付(毎週火曜日に更新)を表示できるようにします。Swift - 複数の日付をデフォルトで保存して取得する方法

let today = NSDate() 
    let nextTue = Calendar.current.date(byAdding: .day, value: 6, to: today as Date) 
    let formatter = DateFormatter() 
    formatter.dateFormat = "yyyy-MM-dd" 
    let todayString = formatter.string(from: today as Date) 
    let nextString = formatter.string(from: nextTue!) 
    formatter.dateFormat = "dd-MMM-yyyy" 

    let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian) 
    let components = calendar!.components([.weekday], from: today as Date) 

    if components.weekday == 3 { 
     print("Hello Tuesday") 
     thisWeekDate.text! = "\(todayString) - \(nextString)" 

    } else { 
     print("It's not Tuesday") 
    } 

App design screenshot

+0

から完全に削除したい場合は、あなたの文字列は、コードがするたびに計算しているようですなぜあなたはそれを保存する必要がありますか? –

+0

@ inspector_60火曜日ではない日付のラベルが表示されないためです。 –

+0

私が理解するのを助けてください:今日の文字列と次の文字列を印刷したいのは火曜日です。これは今日の日付と来週の日付を表していますか? –

答えて

0

NSUserDefaultsデバイスのストレージを使用して、アプリケーションの実行の間でデータを保存します。

あなたのケースで最も簡単な方法は、2つの異なる日付オブジェクトを保存することです。または、両方の日付オブジェクトを含む辞書を作成して代わりに保存することができます。

ストア

UserDefaults.standard.set(todayString, forKey: "todayStringKey") 

let RetrivedDate = UserDefaults.standard.object(forKey: "todayStringKey") as? NSDate 

削除を取得する - あなたはストレージ

UserDefaults.standard.removeObject(forKey: "todayStringKey") 
+0

私は(任意のRetrivedDate)を印刷します、なぜ私はnilを取得しますか? –

+0

最後に文字列が必要な場合は、日付オブジェクトの代わりに保存することができます。 –

+0

RetrivedDataはタイプAnyではありません。NSDateで保存したタイプのものです。投稿したコードのようにNSDateから文字列を作成してください。 –

関連する問題