将字符串变成字符的数组
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)







网友评论