Ios 使用数组扩展获取最新数据

Ios 使用数组扩展获取最新数据,ios,swift,xcode,Ios,Swift,Xcode,编辑:看到它有[Element]{ var arrCopy=self arrCopy=arrCopy.reverse() 如果arrCopy.count>0{ 对于1中的i..[元素]{ var tempArr:[元素]=[] 对于i in(count-1500)print(arrCopy[i])给出了一个错误,因为您的数组超出了索引250 在arrCopy[3]错误开始后,您可以使用%arrCopy.count mutating func fiveHundred() -> [Elemen

编辑:看到它有[Element]{ var arrCopy=self arrCopy=arrCopy.reverse() 如果arrCopy.count>0{ 对于1中的i..[元素]{ var tempArr:[元素]=[] 对于i in(count-1500)
print(arrCopy[i])
给出了一个错误,因为您的数组
超出了索引
250

arrCopy[3]
错误开始后,您可以使用
%arrCopy.count

mutating func fiveHundred() -> [Element] {

    var tempArr: [Element] = []

    for i in (count-1500)..<count {

        tempArr.append(self[i])
    }
    return tempArr
}
扩展数组{
变异函数fivehundo(){
var arrCopy=self
arrCopy=arrCopy.reverse()
如果arrCopy.count>0{
对于i in 1..
打印(arrCopy[i])
给出了一个错误,因为您的数组
超出了
250的索引

arrCopy[3]
错误开始后,您可以使用
%arrCopy.count

mutating func fiveHundred() -> [Element] {

    var tempArr: [Element] = []

    for i in (count-1500)..<count {

        tempArr.append(self[i])
    }
    return tempArr
}
扩展数组{
变异函数fivehundo(){
var arrCopy=self
arrCopy=arrCopy.reverse()
如果arrCopy.count>0{

对于1中的i..我真的不明白您想要实现什么。但是如果我很清楚您需要追加反向数组,不超过250个元素,不包括第一个元素,那么下面是解决方案:

extension Array {

    mutating func fiveHundred() {

        var arrCopy = self
        arrCopy = arrCopy.reverse()

        if arrCopy.count > 0 {
            for i in 1..<250 {

                ///print(arrCopy[i])
                self.append(arrCopy[i%arrCopy.count])
            }
        } else {
            print("Array is empty")
        }
    }
}

我真的不明白您想要实现什么。但如果我很清楚您需要追加反向数组,不超过250个元素,不包括第一个元素,那么下面是解决方案:

extension Array {

    mutating func fiveHundred() {

        var arrCopy = self
        arrCopy = arrCopy.reverse()

        if arrCopy.count > 0 {
            for i in 1..<250 {

                ///print(arrCopy[i])
                self.append(arrCopy[i%arrCopy.count])
            }
        } else {
            print("Array is empty")
        }
    }
}
以下是对以下方面的改进:

扩展数组{
变异函数fivehundo(){
防护自我计数>0其他{
打印(“数组为空”)
返回
}
让endIndex=min(self.count,250)
self+=self.reverse()

扩展数组{
变异函数fivehundo(){
防护自我计数>0其他{
打印(“数组为空”)
返回
}
让endIndex=min(self.count,250)


self+=self.reverse()[1..感谢您的回答。请查看编辑后的问题详细信息。谢谢您的回答。请查看编辑后的问题详细信息。另外,fivehundle是void函数。您对此行有何期望?printData(Data.array.fivehundle)你能提供一个输入和预期输出的例子吗?仍然完全不清楚。如果原始数组有300个元素,你期望什么?你仍然变异原始数组,现在同时返回其他数组。你需要什么?你需要帮助我们理解你真正需要的。请告诉我们t的预期输出是什么这三个例子:(1)
let list0:[Double]=[]
(2)
let list1:[Double]=[1,2,3]
(3)
let list2:[Double]=Array(0…999)。map(Double.init)
这个问题非常不清楚。你试图让我们从你的坏代码中推断出你的问题。这可能会失败,因为你的代码不是你想要的(因为它坏了)。请用英语向我们解释,从头到尾,确切地说,您输入的是什么数据,以及您想要输出的是什么。另外,fivehundle是void函数。您希望从这一行中得到什么?printData(data.array.fivehundle)你能提供一个输入和预期输出的例子吗?仍然完全不清楚。如果原始数组有300个元素,你期望什么?你仍然变异原始数组,现在同时返回其他数组。你需要什么?你需要帮助我们理解你真正需要的。请告诉我们t的预期输出是什么这三个例子:(1)
let list0:[Double]=[]
(2)
let list1:[Double]=[1,2,3]
(3)
let list2:[Double]=Array(0…999)。map(Double.init)
这个问题非常不清楚。你试图让我们从你的坏代码中推断出你的问题。这可能会失败,因为你的代码不是你想要的(因为它坏了)。用英语向我们解释,从头到尾,确切地说,你提供了什么数据作为输入,以及你想要得到什么。一些改进:
var arrCopy=self
arrCopy
设置为
self
的副本,但下一行立即替换为
arrCopy.reverse()
。如果条件更适合作为保护。此外,使用“max”将夹具固定到250将是明显的。一些改进:
var arrCopy=self
arrCopy
设置为
self
的副本,但下一行立即替换为
arrCopy.reverse()
。如果条件允许,作为一个守卫可能更合适。另外,使用“max”来爬到250会更清晰。我认为
max
应该是
min
。你需要定义
arrCopy
@appzYourLife早上好:)你能告诉我还没有喝咖啡吗?:)Ty用于代码修订;如果需要,请随意编辑我的帖子wish@AlexanderMomchliov:没问题:D@ShadowOf我尽量不在没有海报许可的情况下进行如此大的更改。嗨,我认为
max
应该是
min
。你需要定义
arrCopy
@appzYourLife早上好:)你能告诉我我还没有咖啡好了吗?:)代码修改很方便;如果你愿意,请随意编辑我的帖子wish@AlexanderMomchliov:没问题:D@ShadowOf未经海报允许,我尽量不做这样大的改动
mutating func fiveHundred() -> [Element] {

    var tempArr: [Element] = []

    for i in (count-1500)..<count {

        tempArr.append(self[i])
    }
    return tempArr
}
extension Array {

    mutating func fiveHundred() {

        var arrCopy = self
        arrCopy = arrCopy.reverse()

        if arrCopy.count > 0 {
            for i in 1..<250 {

                ///print(arrCopy[i])
                self.append(arrCopy[i%arrCopy.count])
            }
        } else {
            print("Array is empty")
        }
    }
}
extension Array {
    mutating func fiveHundred() {

        var arrCopy = self
        arrCopy = arrCopy.reverse()

        if arrCopy.count > 0 {
            let endIndex = arrCopy.count > 250 ? 250 : arrCopy.count
            let subArrCopy = arrCopy[1..<endIndex]
            self.appendContentsOf(subArrCopy)
        } else {
            print("Array is empty")
        }
    }
}
var data: [Double] = [1.0, 2.0, 3.0, 4.0]
data.fiveHundred() //ok
print(data)
//[1.0, 2.0, 3.0, 4.0, 3.0, 2.0, 1.0]
print(data.fiveHundred())
//() - because fiveHundred() is void function, it only mutate your array returning void
print(data)
//[1.0, 2.0, 3.0, 4.0, 3.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 2.0, 1.0] - fiveHundred() mutated data in previous print call

let data: [Double] = [1.0, 2.0, 3.0, 4.0]
data.fiveHundred() //error
extension Array {
    mutating func fiveHundred() {
        guard self.count > 0 else {
            print("Array is empty")
            return
        }

        let endIndex = min(self.count, 250)
        self += self.reverse()[1..<endIndex]
    }
}