2016-07-28 4 views
1

Я пытаюсь сохранить данные в зависимости от дня, когда данные были записаны (например, у пользователя было 5 яблок, чтобы съесть 29/07/2016).Swift: как сохранить данные на определенную дату

Я не могу найти способ в документации для сохранения данных без создания события календаря. Будут ли данные храниться в массиве, содержащем как количество потребляемых яблок, так и день, когда яблоки были съедены с помощью структуры? и как можно получить доступ к данным? будет ли это использование глобальных переменных?

+1

как долго вы хотите его сохранить? как вы собираетесь использовать его, как только он будет сохранен? – Wain

ответ

1

Вы можете использовать dictionaries:

Вы бы создать словарь, как это:

var applesPerDay = [NSDate: Int]() 

Вы бы установить значение в течение дня, как это:

applesPerDay[NSDate()] = 5 

Вы можете печатать все значения отсортированы в хронологическом порядке:

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) Как я могу сделать их доступными для всех контроллеров представлений? 2) Будет ли это работать, если данные должны быть записаны автоматически, например. В viewDidLoad из ViewController каждая информация будет уникальной, если я просто добавлю код, который у вас есть в вашем ответе? (при условии, что «5» будут отличаться каждый день) –

+0

1. Вы можете сохранить его в NSUserDefaults (многие глобальные переменные обычно являются симптомом плохого проектирования программного обеспечения). 2. Да, это было бы уникально, но только для каждого файла tic (доли секунды), а не для каждого дня. Если вы хотите сделать его уникальным в течение нескольких дней, используйте [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 для сохраненных данных.

Проверить вокруг одного из многих учебников, в большинстве случаев я предлагаю один из Ray Wenderlich, таких, как этот один Intro to CoreData

Примечание: Я не, ни я никогда не был, связан с Рэем Wenderlich :)

+0

Эта страница очень полезна, спасибо за ваш ответ! –

+0

Последующий вопрос; являются ли записи coredata глобальными? Если нет способа сделать их глобальными? –

Смежные вопросы