2016-10-24 4 views
-6

NSUserDefaultsに格納されている値を出力すると、次のような出力が表示されます。NSUserDefaultに日付を保存すると不正な値が返される

let prefs = NSUserDefaults.standardUserDefaults() 
    prefs.setObject(NSDate(), forKey: "ST") 

    print ("Hey \(prefs.objectForKey("ST")) ") 

ねえオプション(2016年10月24日8時29分20秒0000)

テキストOptional(が表示され、私がしたいことだけDate timeを表示することであります。

さらに、与えられた時間は間違っています。どうすればこの問題を解決できますか? it'sためにオプションです

+0

それは時間が間違っている理由だと思っています。 –

+0

@Jeckyどうすればこの問題を解決できますか?Date-Timeを囲む 'Optional'テキストを取り除くにはどうしたらいいですか? – Illep

+1

オプションの取り扱いはSwiftの*基本*です。ここで説明します:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID330 – Moritz

答えて

0

、次の操作を行います。

if prefs.object(forKey: "ST") != nil{ 
    print ("Hey \(prefs.objectForKey("ST")!) ") 
} 

時間については、理由TimeZoneのit's。たDateFormatter =たDateFormatter() formatter.dateFormat =「yyyy.MM:たぶん、あなたはフォーマットさ文字列

のletフォーマッタとしてあなたの日付を保存することができます

let localDateTime = NSDate().description(with: NSLocale.current) 
+0

'これに加えて、与えられた時間が間違っています ' –

+0

'let localDateTime = ...'という行にこのエラーがあります。非関数型' String 'の値を呼び出せません – Illep

+0

奇妙なことに、その線は機能しています。他の人がそれを邪魔していないことを確認し、プロジェクトをきれいにしてください。 –

0

:あなたのタイムゾーンで時間を取得するには、これを試してください.dd HH:mm:ss ZZZ "

// Save Date... 
let hoy: Date = Date() 

let formato_hoy = formatter.string(from: hoy) 
print(formato_hoy) 


// Recover Date... 
let future_format: String = "2016.10.24 09:54:22 +0200" 

if let future = formatter.date(from: future_format) 
{ 
    print(future) 
} 

マスクのZZZ値は、タイムゾーンに関連しています。

関連する問題