У меня возникла проблема при попытке сохранить кучу элементов со свойствами в моем приложении. То, что я уже попробовал (и в основном работает), это создание моего пользовательского класса:
class Waterz {
var entitle: String? = nil
var artitle: String? = nil
var isFavorited: Bool? = nil
var date: [String]? = nil
var frequency: [daysOfWeek]? = nil
var subMenus: Array<Waterz>? = nil
var content: String? = nil
var location: String? = nil
var audio: [(String, reciterNames)]? = nil
init() {
}
convenience init(entitle: String, artitle: String, isFavorited: Bool?, date: [String]?, frequency: [daysOfWeek]?, content: String?, location: String?, audio: [(String, reciterNames)]?) {
self.init()
...
}
}
, а затем я сделал другой класс, где у меня есть база данных:
class WaterzBank {
// all
var allItems: [Waterz]
var allDuas: [Waterz]
var allAmal: [Waterz]
// main categories
var mainCategories: Waterz
// individual categories
var duaKumayl: Waterz
var duaMakarem: Waterz
var duaNudba: Waterz
... (like 5 thousand more)
}
// Initialize them here
init() {
duaKumayl = Waterz(entitle: "Dua Kumayl", artitle: "دعاء كميل", isFavorited: false, date: ["1-27"], frequency: [.sunday], content: "kumayl", location: nil, audio: nil)
duaMakarem = Waterz(entitle: "Dua Makarem Al-Akhlaaq", artitle: "دعاء مكارم الأخلاق", isFavorited: true, date: ["1-27"], frequency: [.sunday, .everyday], content: "duaMakaremAlAkhlaaq", location: nil, audio: nil)
duaNudba = Waterz(entitle: "Dua Nudba", artitle: "دعاء النّدبة", isFavorited: true, date: nil, frequency: nil, content: "duaNudba", location: nil, audio: nil)
...(initializing all the other variables)
favorites = Waterz(entitle: "Favorites", artitle: "المفضلة", subMenus: allItems.filter {
$0.isFavorited == true
})
// MARK: - Main
mainCategories = Waterz(entitle: "Categories", artitle: "الأقسام", subMenus: [duas, amal, ziyarat, munajat, taqeebat, others, favorites])
}
Все работает с этимнастройки, за исключением постоянного изменения статуса избранных элементов (пользователем все начинается как избранное, но я хочу, чтобы они могли это изменить). Я пробовал так много способов, как использование прямого Realm, разбор JSON в Realm, CoreData, UserDefaults, но ни один из них не сработал для меня.
Так что все начинается как фавориты. Когда пользователь пытается избрать одного из них. Это работает, но когда они закрывают приложение и снова открывают его, оно возвращается в избранное.
Единственное, что пользователь должен иметь возможность изменить, это свойство isFavorited. Все остальное я установил, и оно приходит с приложением, как только вы загрузите его.
Что мне делать в этом случае? Должен ли я полностью изменить свою систему? Есть ли способ проанализировать все мои инициализированные переменные в базе данных области? Если да, смогу ли я разобрать такие вещи, как audio
, который имеет тип [(String, Enum.type)]
? Это мое первое приложение, и я действительно запутался. Спасибо за вашу помощь.