如何在没有条件快速的情况下验证多个值

Man*_*n S -4 arrays if-statement ios swift

这是在条件语句中做的一种可能的方法吗

if let offer = self.offer_visitor_["Offer"],  let video = self.offer_visitor_["VideoReward"],  let bday = self.offer_visitor_["BirthdayReward"],let Promotional = self.offer_visitor_["promotional"]{
            
            if !offer.isEmpty && !video.isEmpty && !bday.isEmpty && !Promotional.isEmpty{
                return 4
            }else if !offer.isEmpty && !bday.isEmpty && !video.isEmpty {
                return 3
            }else if !offer.isEmpty && !video.isEmpty && !Promotional.isEmpty {
                return 3
            }else if !offer.isEmpty && !bday.isEmpty && !Promotional.isEmpty {
                return 3
            }else if !video.isEmpty && !bday.isEmpty && !Promotional.isEmpty {
                return 3
            }else if !offer.isEmpty && !video.isEmpty {
                return 2
            }else if !offer.isEmpty && !bday.isEmpty {
                return 2
            }else if !offer.isEmpty && !Promotional.isEmpty{
                return 2
            }else if !video.isEmpty && !bday.isEmpty {
                return 2
            }else if !video.isEmpty && !Promotional.isEmpty {
                return 2
            }else if !bday.isEmpty && !Promotional.isEmpty {
                return 2
            }else if !offer.isEmpty {
                return 1
            }else if !video.isEmpty {
                return 1
            }else if !bday.isEmpty {
                return 1
            }else if !Promotional.isEmpty {
                return 1
            }else{
                UIView.transition(with: self.noHistory_Label!,
                                  duration: 0.35,
                                  options: .transitionCrossDissolve,
                                  animations: { [weak self] in
                                        self?.noHistory_Label?.text = UserDefaults.language == "ar" ? ArabicLanguageFile.NoOffers : EnglishLanguageFile.NoOffers
                                  }, completion: nil)
                return 0
            }
        }else{
            UIView.transition(with: self.noHistory_Label!,
                              duration: 1,
                              options: .transitionCrossDissolve,
                              animations: { [weak self] in
                                self?.noHistory_Label?.text = UserDefaults.language == "ar" ? ArabicLanguageFile.NoOffers : EnglishLanguageFile.NoOffers
                }, completion: nil)
            return 0
        }
Run Code Online (Sandbox Code Playgroud)

如果动态值是使用这样的东西的方式

let count = [arrayData1["Available Offers"]?.count != 0, arrayData1["Redeemtion Offers"]?.count != 0, arrayData1["Redeemtion Vouchers"]?.count != 0, self.arrayData1[ “可用优惠券”]?.count != 0].filter { $0 == true }.count

地图过滤器

谢谢

Ale*_*ica 7

据我了解,这只是一种计算这 4 件事中有多少不是空的非常复杂的方法。看起来很简单:

let emptyObjectCount = [offer, video, bday, promotional]
    .filter { !$0.isEmpty }
    .count
Run Code Online (Sandbox Code Playgroud)

尽管这些变量名称没有意义,但您应该改进它们。