ios - 将数值数组的特定索引与 Swift 中的 Int 变量进行比较
问题描述
我正在开发的逻辑,书页和空闲页数组索引之间的比较。
freePageArr = ["1", "5", "6", "12", "14", "15"]
self.bookPage = 1
func checkingPay(_ bookPage: Int) {
let freePage = bookDetail?.bookFreePageList
let freePageArr = freePage?.components(separatedBy: ",")
//fail logic....
if <<I need code..!!>> {
print("Hello!! Free Page.")
print("currentPage :", self.bookPage)
} else {
print("Sorry!! Paid Page.")
print("CurrentPage :", self.bookPage)
}
}
如果 free 的值pageArr
与 的值相同self.bookPage
,则打印print (" Hello !! Free Page. ")
如果 free pageArr
index 的值与 的值不同self.bookPage
,我想打印print (" Sorry !! Paid Page. ")
日志。
解决方案
您可以简单地使用contains(_:)
onfreePageArr
检查其中是否bookPage
存在。
此外,由于components(separatedBy:)
给出了array
of String
,您需要将其转换为Int
array
usingcompactMap(_:)
以匹配bookPage
其中的Int
值。
func checkingPay(_ bookPage: Int) {
let freePage: String? = bookDetail?.bookFreePageList //it must be like "1,5,6,12,14,15"
if let freePageArr = freePage?.components(separatedBy: ",").compactMap({ Int($0) }) {
if freePageArr.contains(bookPage) {
print("Hello!! Free Page.")
print("currentPage :", bookPage)
} else {
print("Sorry!! Paid Page.")
print("CurrentPage :", bookPage)
}
}
}
推荐阅读
- javascript - 如何不保存使用 fetch 方法检索到的数据?Javascript
- symfony - DoctrineMigrations 与 Bundle 作为 Vendor-Package
- python - 用多个字符分割字符串(python)
- java - 为什么 Eclipse 内存分析器不显示 InetSocketAddress 字符串值?
- r - 将 RData 保存到不同的目录
- php - 在 Postman 中测试发送文件到 API 时,为什么我的简单发布请求不起作用?
- javascript - 将 zip 上传到即时游戏主机后,我收到以下错误 (blocked:csp)
- typescript - 在 Typescript 和 MySQL 中使用 pool.query 进行嵌套查询
- colors - 是否有在整个系统上使用 3DLUT 的解决方案(Windows 10)
- php - Laravel 中的错误 参数太少而无法运行