2016-04-29 13 views
1

は、私は、次のことを行う必要があり、私はそれにあなたの助けが必要: NSDateComponentでNSUserDefaultsを使用して格納する方法

  1. は、日付を入力するユーザーのためのテキストフィールドを作成します。インストール後最初にユーザーがアプリを開いたときに発生します。
  2. 現在の日付と比較してください
  3. 違いを表示します。
  4. 差分を保存して、その後にアプリケーションを読み込んだときに読み込まれた差分が表示されるようにします。私のコードは、この(私は後のUITextFieldからの入力に定数を変更します)

    let currentDate = NSDate() 
    
    let dataformatterCurrent = NSDateFormatter() 
    
    dataformatterCurrent.dateFormat = "MMMM dd, yyyy, HH:mm" 
    
    let convertedCurrentDate = dataformatterCurrent.stringFromDate(currentDate) 
    
    let dateformatter = NSDateFormatter() 
    
    dateformatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
    
    let dateAskumar = "2015-10-08 14:25:37" 
    
    let date1 = dateformatter.dateFromString(dateAskumar)! 
    
    let diffDateComponents = NSCalendar.currentCalendar().components([NSCalendarUnit.Month, NSCalendarUnit.Day, NSCalendarUnit.Hour, NSCalendarUnit.Minute], fromDate: date1, toDate: currentDate, options: NSCalendarOptions.init(rawValue: 1)) 
    

    のように見えます

NSUserDefaultsの変数diffDateComponentsを保存する方法で助けてください。

+1

なぜnsurlが必要ですか?あなたはNSUserDefaultsを使うことができます。 –

+0

あなたの質問はあまり意味がありません。どのURLですか?どのように(そしてなぜ)日付コンポーネントのURLを使用したいのですか? – rmaddy

+0

私はtypoを修正しました。そのNSuserdefaultではなくnsurlです。それを指摘してくれてありがとう。 – akhicoda

答えて

0

日付コンポーネントを辞書に入れて、それをNSUserDefaultsに格納します。

例:あなたは日付の文字列表現に対処する必要はありません

let currentDate = NSDate() 
let unitFlags: NSCalendarUnit = [.Month, .Day, .Hour, .Minute] 
let components = NSCalendar.currentCalendar().components(unitFlags, fromDate: date1, toDate: currentDate, options: []) 
let difference = ["months": components.month, "days": components.day, "hours": components.hour, "minutes": components.minute ] 
let defaults = NSUserDefaults.standardUserDefaults() 
defaults.setObject(difference, forKey: "difference") 

この方法です。もちろん、@rmaddyが指摘しているように、もしあなたが常に現在の日付とそれを比較していれば、他の日付を保存して取り出すことができます。

更新:これはNSDateComponents全体を格納していないことがわかっているので、必要ならばNSCodingを実装する必要があります。しかし、いくつかのコンポーネントだけに興味があるなら、これで十分です。

関連する問題