PrepareForSegue, NSUserDefault и Singleton
У вас есть несколько возможных вариантов передачи данных в другие представления в зависимости от того, как вы хотите обрабатывать эти данные, я объясню каждый для вас, и вы сможете выбрать, какой из них лучше всего соответствует вашим потребностям.
Я рекомендую этот метод, если вы хотите сохранить свои данные для 1 переходного перехода, это хороший повод снова передать это в другое представление, после чего вам нужно создать еще один prepareForSegue
в новом представлении. вот пример того, как это сделать:
Сначала вы создаете 2 переменные в обоих представлениях: 1 для отправки (currentViewController.swift
) и 1 для получения (toViewyourGoingController.swift
).
currentViewController.swift var dataToSend: AnyObject?
ViewYourGoingController.swift var dataToReceive: AnyObject?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
//Check your segue, this way you can transfer different data to different view. also make sure the identifier match your segue.
if segue.identifier == "toViewYourGoing" {
//Initial your second view data control
let ExchangeViewData = segue.destinationViewController as! toViewyourGoingController
//Send your data with segue
ExchangeViewData.dataToReceive = dataToSend
}
}
Теперь этот метод хорош, если вы хотите сохранить свои данные, пока приложение установлено, как только приложение будет удалено, оно будет сброшено автоматически. У вас также есть возможность обновить значение ключа, если хотите, вот как вы это делаете NSUserDefault:
Мне всегда нравится регистрировать мой NSUserDeafult по умолчанию, многие люди просто продолжают второй шаг без регистрации.
Зарегистрируйте NSUserDefault в AppDelgate.swift
NSUserDefaults.standardUserDefaults().registerDefaults(["valueName": AnyObject])
Установите значение на свой NSUserDefault, это зависит от того, какой тип данных вы храните, он должен совпадать с типом вашей регистрации, если вы зарегистрировались. (Пример логического типа данных ниже)
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "valueName") //Bool Data Type
Доступные типы:
![введите здесь описание изображения](https://i.stack.imgur.com/61INp.jpg)
Убедитесь, что вы синхронизируете, как только вы установите значение NSUserDefault, таким образом, оно будет обновляться мгновенно, в противном случае оно будет обновляться, когда у него будет шанс.
NSUserDefaults.standardUserDefaults().synchronize()
Получить значение: будет получено логическое значение, поскольку мы устанавливаем логическое значение и регистрируем логическое значение.
let Variable: Bool! = NSUserDefaults.standardUserDefaults().boolForKey("valueName")
Синглтон
Теперь singleton — это в основном глобальная переменная, которую вы можете использовать в любых представлениях, но некоторые разработчики сталкиваются с некоторыми ошибками и трудностями, используйте его на свой страх и риск, я рекомендую этот метод, когда вы уверены, что будете часто использовать эти данные ( ВСЕ ЕЩЕ РИСКОВАН), но этот метод похож на богиню обработки данных :).
Создайте подкласс NSObject
и назовите его DataManager.swift
(я называю его диспетчером данных, потому что он обрабатывает данные) следующим образом:
импортировать UIKit
class DataManager: NSObject {
//Store Data Globally
static var someData: Boo! //This Boolean, you can choose whatever you want.
}
static
— это то, что поддерживает ваши данные.
Теперь вы можете хранить и получать someData
из любого места, как вы работаете с любым типом данных.
//Store
DataManager.someData = true
//Receive
print(DataManager.someData)
Проблемы:
Вы также можете использовать
Связка ключей Сергей Каргополов расскажет, как использовать третье лицо для использования быстрой цепочки для ключей. В противном случае вы можете принять еще сложную задачу и создать новую себя :П.
Данные "ключ-значение" в iCloud
person
Brian Nezhad
schedule
04.11.2015