【问题标题】:Append item to favorites将项目附加到收藏夹
【发布时间】:2019-08-02 21:31:34
【问题描述】:

这是问题here的延续

我有这样的课:

class Waterz {

var waterzEntitle: String
var waterzArtitle: String
var waterzIsFavorited: Bool?
var waterzDate: [Date]?
var waterzFrequency: [String]?
var waterzSubMenus: [Waterz]? = []
var waterzContent: String?
var waterzLocation: String?
var waterzAudio: String?

init(entitle: String, artitle: String, isFavorited: Bool?, date: [Date]?, frequency: [EKRecurrenceDayOfWeek]?, subMenus: [Waterz]?, content: String?, location: String?, audio: String?) {
    waterzEntitle = entitle
    waterzArtitle = artitle
    waterzIsFavorited = isFavorited
    waterzDate = date
    waterzFrequency = frequency
    waterzSubMenus = subMenus
    waterzContent = content
    waterzLocation = location
    waterzAudio = audio
}

}

另一个类是我的数据库:

class WaterzBank {

// main categories
var mainCategories: Waterz

// individual categories
    var duaKumayl: Waterz
    var duaFaraj: Waterz
var duas: Waterz

        var salatGhufayla: Waterz
            var salatLaylImportance: Waterz
            var salatLaylMethod: Waterz
        var salatLayl: Waterz
    var prayers: Waterz
var amal: Waterz

// more variables here

var favorites: Waterz

init() {

    // MARK: - Duas
        duaKumayl = Waterz(entitle: "Dua Kumayl", artitle: "دعاء كميل", isFavorited: true, date: nil, frequency: nil, subMenus: nil, content: "kumayl", location: nil, audio: nil)
        duaFaraj = Waterz(entitle: "Dua Al-Faraj", artitle: "دعاء الفرج", isFavorited: false, date: ["10-21", "2-15"], frequency: ["friday"], subMenus: nil, content: "faraj", location: nil, audio: nil)
    duas = Waterz(entitle: "Duas", artitle: "الأدعية", isFavorited: nil, date: nil, frequency: nil, subMenus: [duaKumayl, duaMakarem, duaNudba, duaSabah, duaSamat, duaAtharat, duaAhd, duaTawassul, duaFaraj], content: nil, location: nil, audio: nil)


    // MARK: - Amal

            salatGhufayla = Waterz(entitle: "Salat Al-Ghufayla", artitle: "صلاة الغفيلة", isFavorited: false, date: nil, frequency: nil, subMenus: nil, content: "salatGhufayla", location: nil, audio: nil)
                salatLaylMethod = Waterz(entitle: "Method", artitle: "كيفيّة صلاة الليل", isFavorited: false, date: nil, frequency: nil, subMenus: nil, content: "salatLaylMethod", location: nil, audio: nil)
                salatLaylImportance = Waterz(entitle: "Importance of Salat Al-Layl", artitle: "فضل صلاة الليل", isFavorited: false, date: nil, frequency: nil, subMenus: nil, content: "salatLaylImportance", location: nil, audio: nil)
            salatLayl = Waterz(entitle: "Salat Al-Layl", artitle: "صلاة الليل", isFavorited: false, date: nil, frequency: nil, subMenus: [salatLaylMethod, salatLaylImportance], content: "salatLayl", location: nil, audio: nil)
        prayers = Waterz(entitle: "Prayers", artitle: "الصلوات", isFavorited: nil, date: nil, frequency: nil, subMenus: [salatGhufayla, salatLayl], content: nil, location: nil, audio: nil)
    amal = Waterz(entitle: "A'mal", artitle: "الأعمال", isFavorited: nil, date: nil, frequency: nil, subMenus: [prayers], content: nil, location: nil, audio: nil)


    // more variables initialized here


    // MARK: - Favorites

    favorites = Waterz(entitle: "Favorites", artitle: "المفضلة", isFavorited: nil, date: nil, frequency: nil, subMenus: nil, content: nil, location: nil, audio: nil)

    mainCategories = Waterz(entitle: "Categories", artitle: "الأقسام", isFavorited: nil, date: nil, frequency: nil, subMenus: [duas, amal, ziyarat, munajat, taqeebat, others, favorites], content: nil, location: nil, audio: nil)

}

}

我的第一个问题是,如何循环访问数据库中的所有变量以查看是否isFavorited = true,然后将该项目附加到“收藏夹”的“子菜单”中?有没有办法做到这一点,或者我应该将收藏夹作为其他类别之外的单独类别? 接下来,由于我分配了许多 SubCategories(和 SubSubCategories,等等......)星期和日期的某些天,我将如何在那一天提取变量?例如,如果今天是星期二,总共有 5 个变量被指定为“星期二”,那么它们都应该在控制台上打印。

最后一个问题:我有点迷茫,因为我不确定我是否正确地做我的数据库并且没有人可以问。我只是想看看我所做的是否真的正确。我所做的是声明变量,然后在 init() 中我给了它的属性。那是对的吗?我必须再输入 2000 个变量。

这是我的应用的样子: app demo

【问题讨论】:

  • 您刚刚将多个Dua 称为Duas?真的吗?
  • 您想对收藏的菜单做什么?你想如何在这张图片中显示最喜欢的菜单i.stack.imgur.com/vSpqb.gif
  • 这里的分类是什么?
  • 抱歉回复晚了。我修复了这个问题以使其更清楚。我还链接了我的应用程序的 gif。非常感谢

标签: swift


【解决方案1】:

使用过滤器:

// returns only favorite duas
let favorites = duas.filter { $0.isFavorited == true }

或者您可以从子类别中过滤以获得您需要的内容。例如:

// Returns all duas where it contains `Tuesday` in the `frequency`
subcategories.filter { $0.frequency.contains(Tuesday) }

【讨论】:

  • 感谢您的回答。如果我只想扫描类中的所有变量而不是数组,我该怎么做?谢谢。
猜你喜欢
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 2019-01-02
  • 2021-04-26
  • 2021-11-18
  • 2022-01-08
相关资源
最近更新 更多