Если я могу дать свои два цента, первое, что вам нужно сделать, это «спроектировать», как представлять человека программно.Вы можете создать структуру или класс для этого, даже если структура более подходит:
struct Person {
var name: String?
var answer: String?
var photo: String?
}
Затем вы можете решить, как сохранить данные такого объекта постоянно.Если вы хотите использовать базу данных, я бы порекомендовал использовать SQLite с библиотекой FMDB .Это действительно легко и быстро научиться использовать его, и это также очень удобно.Я использовал это большие проекты, и это работает гладко.Я нахожу CoreData слишком сложным и излишним в зависимости от того, что вам нужно.
Если вы не хотите использовать базу данных, ваш единственный другой способ - сохранить в файлы, но все же, у вас есть варианты здесьтоже.Если вы кодируете (см. Codable protocol в Swift), вы можете использовать NSKeyedArchiver для преобразования в объект Data и записи затем на диск.Если вам нравится использовать словари, и поскольку у человека не будет слишком много свойств, вы можете создать словарь, назначив свойства и их значения, а затем преобразовать и сохранить как данные JSON, илидаже файлы Plist.Без какого-либо намерения продвигать здесь, но просто для того, чтобы оказать некоторую дополнительную помощь, если вы хотите , посмотрите библиотеку , которую я написал и которая может сделать все это автоматически для вас.Это протокол, который вы должны принять, а затем вы можете мгновенно преобразовать свою структуру в словарь, JSON или plist и сохранить в файлы.
Независимо от того, какой путь вы собираетесь выбрать, сохраните изображения какОтдельные файлы в папку с документами, а их имена хранятся только в базе данных / файле.Основываясь на них, вы можете легко построить путь к каждому изображению (или URL) при необходимости. Предупреждение: не сохраняйте полный путь к каталогу документов, особенно если вы тестируете на симуляторе;пути меняются в каждой сборке.Сохраните только имя файла.
Кроме того, если вы собираетесь использовать структуру, подобную приведенной выше, вы можете реализовать небольшие, но очень удобные функции, которые будут отвечать за сохранение, загрузку илиобновление ваших данных до решения (база данных / файл), которое вы в конечном итоге выберете.Таким образом, вы будете иметь связанные вещи, собранные в одном месте, и легко доступные (например, person.save ()).
struct Person {
var name: String?
var answer: String?
var photo: String?
func save() {
…
}
func load() {
…
}
// More functions…
}
Наконец, избегайте использования UserDefaults или, по крайней мере, оставьте только несколькокритических данных нет.UserDefaults не предназначены для хранения всех данных, созданных вашим приложением.Самое главное, не используйте его для сохранения конфиденциальных данных, особенно паролей и тому подобного.
Надеюсь, вышесказанное поможет вам принять решение.