2016-07-13 13 views
2

私のアプリは、日付とNSDate()の間の日数を数えます。私がそれをリリースしたとき、ユーザーは1つの日付、タイトル、背景イメージしか保存できませんでした。UserDefaultsが空の場合に1回チェックする方法

複数の日付を保存するオプションを持つUICollectionViewがあり、それぞれの配列に日付、タイトル、イメージ文字列を追加してセルを作成します。

アプリが完全に変更されているため、ユーザーが日付を保存しているかどうかをチェックする方法に苦労しています。もしそうなら、その情報を配列に追加してセルを作成します。

しかし、私はこれが一度だけチェックされたかった - 最初にアプリケーションがアップデートや新規インストールから開かれたとき。

ここで私はそれについて考えていますが、それは方法では動作しません。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell 

    if userDefault.objectForKey("day") == nil { 
    } else { 
     // Add the first date created from previous version 
     let day = userDefault.objectForKey("day") as? String 
     let dateFormatter = NSDateFormatter() 
     dateFormatter.dateFormat = "dd MMMM yyyy hh:mm a" 
     let date = dateFormatter.dateFromString(day!)! 
     let date1 = dateFormatter.stringFromDate(date) 
     addDateToArray(date1) 

     // Add the since text 
     let text = userDefault.objectForKey("sinceText") as? String 
     addSinceLabelToArray(text!) 

     //Add the image background 
     let image = userDefault.objectForKey("khoury") as! String 
     addThemeToImagesArray(image) 
    } 

上記のコードで何が起こるかは、nilを返します。私は最初のセルを作成することを期待しているので、ユーザーは保存した日付を見ることができます。

+1

機会を取りますNSUserDefaultsではなくストレージにCore Dataを採用するユーザーが最初に新しいバージョンを起動するときは、NSUserDefaults値を確認し、コアデータに移行してからNSUserDefaults値を削除します。 – Paulw11

+2

「うまくいきません」は、あなたの問題についてほとんど何も教えてくれません。あなたは何が起こると思いましたか、代わりに何を見ましたか、それは何が起こっていると思いますか? – Jonah

+0

@Jonah編集を編集しました – Khoury

答えて

1

をリロード:

let defaults = NSUserDefaults.standardUserDefaults() 

if (!defaults.boolForKey("migrated")) { 
    defaults.setBool(true, forKey: "migrated") 
    // ... anything else 
} 
1

ビューコントローラ内に配列を作成します。

viewDidLoadで次に
var dates = [NSDate]() 

if let retrieved = userDefault.objectForKey("day") { 
    dates = retrieved as! [NSDate] 
} 

その後、あなたのコレクションビューは、あなたが最初の実行を検出するNSUserDefaultsに別のブール値を使用することができます

関連する問題