2016-07-28 14 views
1

データが記録された日に基づいてデータを保存しようとしています(たとえば、ユーザーが29/07/2016で5つのりんごを食べていました)。Swift:特定の日付にデータを保存する方法

カレンダーイベントを作成せずにドキュメントを保存する方法が見つかりません。データは、リンゴの数とリンゴが構造体を使用して食べられた日の両方を含む配列に格納する必要がありますか?どのようにデータにアクセスできますか?それはグローバル変数の使用を通じてですか?

+1

どのくらい保存したいですか?それが一度保存されると、どうやってそれを使うつもりですか? – Wain

答えて

1

あなたはdictionaries使用することができます

applesPerDay[NSDate()] = 5 

あなたはすべて印刷することができます:

var applesPerDay = [NSDate: Int]() 

あなたは、このような日のために値を設定します:

あなたは、このような辞書を作成します値は次のように時間順にソートされます:

for key in applesPerDay.keys.sort({$0.compare($1) == .OrderedAscending}) { 
    //you may want to format the date 
    print("On day \(key) I ate \(applesPerDay[key]!) apples") 
} 

あなたは、あなたが見ている何のためNSUserDefaults

+0

ありがとうございました!簡単な質問。 1)どのようにこれらをすべてのView Controllerにアクセスできるようにすることができますか? 2)データが自動的に記録される場合、これは機能しますか? ViewControllerのviewDidLoadでは、答えにあるコードを追加したばかりの各日の情報は一意になりますか? ( '5'が毎日異なると仮定して) –

+0

1. NSUserDefaultsに保存することができます(多くのグローバル変数は通常、ソフトウェア設計の貧弱な症状です)。2.はい、それは一意ですが、 1秒の割合)、毎日ではありません。あなたがそれを数日間ユニークにしたい場合は、[NSDateFormatter](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/)を使用して、その日を文字列として保存します( '[String:String]'辞書を使用してください) – Daniel

+0

1.多くのグローバル変数を保存するのが悪い習慣なら、別の方法がありますか? (例えば、60日より古い入力を削除する)。最後に、特定の日のデータにどのようにアクセスしますか?あなたが29/07/2016に食べられたリンゴの数を調べたい場合は、助けてくれてありがとうございました。あなたの答えを正しいと書いてください。 –

2

を使用することができ、データを永続化する必要がある場合は、推奨されるアプローチはCoreDataを使用することです。 NSUserDefaultsは比較的小さな「構成」データを保持できるように設計されています。

CoreDataを使用すると、オブジェクト階層を定義し、格納されたデータの検索、ソート、およびあらゆる種類のSQLスタイルのクエリを実行できます。 :)私はないです、また私は今まで、レイWenderlichと提携されています:周りの多くのチュートリアルのいずれかの

チェック、ほとんどの目的のために、私は、このようなこの1 Intro to CoreData

注意として、レイWenderlichのの一つ示唆します

+0

そのページはとても役に立ちます。 –

+0

フォローアップの質問;グローバルなエントリですか?そうでない場合は、それらをグローバルにする方法がありますか? –

関連する問題