Swift收藏集

2023-01-13  本文已影响0人  独孤流

将字符串变成字符的数组

extension String {
    ///  将字符串按字符变成数组
    var characterList: [String] {
        return Array(self).map(String.init)
    }
    
    // 判断是否是重复的字符
    var isRepeatCharacter: Bool {
        if self.count < 2 {
            return false
        }
        if Set(self.characterList).count == 1 {
            return true
        }
        return false
    }

    /// 判断是否是连续的数字
    var isConsecutiveNumberCharacter: Bool {
        if self.count < 2 {
            return false
        }
        let txtList = self.characterList
        for index in 1..<txtList.count {
            let preText = Int(txtList[index - 1]) ?? 0
            let currentText = Int(txtList[index]) ?? 0
            // 如果有一个不是连续数据,则都不是连续数据
            if currentText - preText != 1 {
                return false
            }
        }
        return true
    }
}

Rang变成数组

let minNum = 5
let maxNum = 8
let list1 = Array(minNum...maxNum)
let list2 = (minNum...maxNum).map { $0 }
let list3 = (minNum...maxNum).map { "\($0)" }

判断数组里的内容是否是重复的内容,通过数组转换成Set的方式

func isRepeatCharacter() {
  let list = ["a","b","c"]
   if list.count < 2 {
      return false
   }
  if Set(list).count == 1 {
       return true
  }
   return false
  }

判断数组里的内容是否是重复的内容,通过对数组的第一个内容开始与前一个进行比较,这个代码多些,但理论时间效率会更高

func isRepeatCharacter2() {
  let txtList = ["a","b","c"]
   if txtList.count < 2 {
      return false
   }
   for index in 1..<txtList.count {
       let preText = txtList[index - 1]
       let currentText = txtList[index]
      // 如果有一个不是重复的数据,则都不是重复的数据
       if currentText != preText {
           return false
       }
  }
     return true
}


rxswift在调用merge组合信号时,需要信号内的内容要一致

Cannot convert value of type 'Observable<[String]>' to expected argument type 'Observable<Bool>'

let ov1 = Observable.of(true)
let ov2 = Observable.of(["A","B"])
let ov3 = Observable.of(Void())
let disposeBag =  DisposeBag()
Observable.merge(ov1, ov2, ov3)
.subscribe { _ in
   print("")
 }.disposed(by: disposeBag)

解决方法,使用不要求相同类型的关键字例如combineLatest或者转换成相同类型

 let ov1 = Observable.of(true)
let ov2 = Observable.of(["A","B"])
let ov3 = Observable.of(Void())
let disposeBag =  DisposeBag()
// 方式一
Observable.combineLatest(ov1,ov2,ov3)
.subscribe { _ in
  print("")
}.disposed(by: disposeBag)
  
// 方式二
Observable.merge(
     ov1.map { _ in Void() },
     ov2.map { _ in Void() },
     ov3.map { _ in Void() }
).subscribe{ _ in
       print("")
}.disposed(by: disposeBag)
上一篇 下一篇

猜你喜欢

热点阅读