Ios 在Swift中比较数组值后移动索引值的问题
这本书有一个章节表。Ios 在Swift中比较数组值后移动索引值的问题,ios,arrays,swift,Ios,Arrays,Swift,这本书有一个章节表。 let chapterList=self.bookDetail。书籍章节列表 ->7,49,73109163195236241 我将此字符串更改为数组 它将与self.bookPage 如果self.bookPage为25 如果我点击上一章的标签, 如果self.bookPage想要转到章节列表中的7 如果self.bookPage为68 如果我点击上一章的标签, 我想self.bookPage转到列表上的第49章 @IBAction func previousChapte
let chapterList=self.bookDetail。书籍章节列表
->7,49,73109163195236241
我将此字符串更改为数组
它将与self.bookPage
如果self.bookPage
为25
如果我点击上一章的标签,
如果self.bookPage
想要转到章节列表中的7
如果self.bookPage
为68
如果我点击上一章的标签,
我想self.bookPage
转到列表上的第49章
@IBAction func previousChapterBtnTapped(_ sender: Any) {
// ["7", "13", "113", "245", "311", "427"]
let chapterListArr = bookDetail?.bookChapterList.components(separatedBy: ",")
<<<i need...>>>
<<< I will need to compare chapterListArr and self.bookPage. Please let me know your grammar.>>>
}
@iAction func PreviousChapterbntaped(uu-sender:Any){
// ["7", "13", "113", "245", "311", "427"]
let chapterListArr=bookDetail?.bookChapterList.components(以“,”分隔)
>
}
根据我对上述信息的理解,您需要使用pages数组进入特定章节。制作一个类似于章节开始或结束的标志,以及标识此页面为章节开始或结束的页面数组
或
您可以保留两个单独的数组,一个包含页面,另一个包含章节信息。
只需比较两个数组,章节将出现在页面中,因为同一页面响应开始和结束
如果我对更详细的信息有错误,请纠正我
很高兴帮助您,快乐编码:)根据我对上述信息的理解,您需要转到特定章节,但使用pages数组。制作一个类似于章节开始或结束的标志,以及标识此页面为章节开始或结束的页面数组 或 您可以保留两个单独的数组,一个包含页面,另一个包含章节信息。 只需比较两个数组,章节将出现在页面中,因为同一页面响应开始和结束 如果我对更详细的信息有错误,请纠正我
很高兴帮助你,很高兴编码:)那么你想知道这是哪一章
var array = ["7", "13", "113", "245", "311", "427"].map{Int($0)!}
public func getChapter(from page: Int) {
var currentChapter = 0
array.enumerated().forEach({ (offset, chapterBeginning) in
if page >= chapterBeginning {
currentChapter = offset+1
}
})
print(currentChapter)
}
getChapter(from: 311)
这将为您提供当前章节。如果页面大于或等于章节开头,请将其转换为int并查看每个位置。那么您想知道它是哪一章吗
var array = ["7", "13", "113", "245", "311", "427"].map{Int($0)!}
public func getChapter(from page: Int) {
var currentChapter = 0
array.enumerated().forEach({ (offset, chapterBeginning) in
if page >= chapterBeginning {
currentChapter = offset+1
}
})
print(currentChapter)
}
getChapter(from: 311)
这将为您提供当前章节。将其转换为int,如果页面大于或等于章节开头,则查看每个位置。假设
bookChapterList
总是按数字排序,您可以首先将字符串转换为int
,颠倒整个过程,不断删除元素,直到元素小于页码,然后再拿第一个
let intChapterList = chapterListArr.map { Int($0)! }
self.bookPage = intChapterList.reversed().drop(while: { $0 >= self.bookPage }).first ?? 1
请注意,我使用了
??1
如果所有的元素都已经完成(这意味着我们首先在第一章),我们就回到第一页。如果您的书的第一页由0
指示,请将其更改为??0
假设bookChapterList
总是按数字排序,您可以首先将字符串转换为Int
,将整个过程颠倒过来,继续删除元素,直到元素小于页码,然后取第一个
let intChapterList = chapterListArr.map { Int($0)! }
self.bookPage = intChapterList.reversed().drop(while: { $0 >= self.bookPage }).first ?? 1
请注意,我使用了
??1
如果所有的元素都已经完成(这意味着我们首先在第一章),我们就回到第一页。如果您的书的第一页由0
指示,请将其更改为??0
将章节转换为整数数组,并使用lastIndex查找上一章节
let chapterListArr = bookDetail?.bookChapterList.components(separatedBy: ",").compactMap { Int($0) }
let index = chapterListArr.lastIndex(where: { $0 <= bookPage}) ?? 0
bookPage = chapterListArr[index]
let chapterListArr=bookDetail?.bookChapterList.components(以“,”分隔)。compactMap{Int($0)}
让index=chapterListArr.lastIndex(其中:{$0将章节转换为整数数组,并使用lastIndex查找上一章节
let chapterListArr = bookDetail?.bookChapterList.components(separatedBy: ",").compactMap { Int($0) }
let index = chapterListArr.lastIndex(where: { $0 <= bookPage}) ?? 0
bookPage = chapterListArr[index]
let chapterListArr=bookDetail?.bookChapterList.components(以“,”分隔)。compactMap{Int($0)}
let index=chapterListArr.lastIndex(其中:{$0您需要章
值,该值小于您指定的书页
的Int
值?我不理解您的要求properly@PGDev这个链接是在寻找确切数字时的一个比较。他想知道的是哪个数字是当前书页下面最接近的数字。例如:if chapter begins在7处,在12处结束,当前页面是10,他想要7作为结果。或者1作为第1章。您需要小于您指定的bookPage
的Int
值的chapter
值?我不理解您的要求properly@PGDev当寻找一个确切的数字时,这个链接是一个比较o找出当前书页下面最接近的数字是什么。例如:如果章节从7开始到12结束,当前页面是10,那么他想要7作为结果。或者1作为第一章。即使OP没有指定这一点,也可以使用@ielyamani true,但如果我们在第二章的第二页,OP想要转到同一章节的第一页章节即使函数名为previouschapterbtnattaped
,我想我还是坚持使用,即使OP没有指定,也可以使用@ielyamani true,但是如果我们在章节的第二页,OP希望转到同一章节的第一页,即使函数名为previouschapterbtnattaped
所以我想我还是坚持