【问题标题】:How to fix Xcode 7.3 warning: `init` is deprecated: it will be removed in Swift 3: Use `enumerate()` method on the sequence [duplicate]如何修复 Xcode 7.3 警告:`init` 已弃用:它将在 Swift 3 中删除:在序列上使用`enumerate()` 方法 [重复]
【发布时间】:2016-03-31 16:22:25
【问题描述】:

从最近更新的 Xcode 7.3 开始,我开始看到这条消息。我正在使用如下的 for in 循环序列:

for (index, product) in EnumerateSequence(self.products) {
     //Do something with the product

     //Do something with the index
}

备注在EnumerateSequence

【问题讨论】:

  • 您在这里没有提出实际问题,警告消息本身(您在标题中引用)告诉您如何消除警告消息。你有什么问题?

标签: ios arrays swift xcode7.3 swift3


【解决方案1】:

如果您想知道为什么他们添加了此警告并且要删除EnumerateSequence.init,这是因为EnumerateSequenceenumerate 方法的实现细节。他们希望你使用enumerate,而不是依赖它的实现方式。

【讨论】:

    【解决方案2】:

    经过一些测试,如果您想同时使用indexobject,这是从 Swift 2.2 开始使用的解决方案:

    for (index, product) in self.products.enumerate() {
        //Do something with the product
    
        //Do something with the index
    }
    

    删除 EnumerateSequence 并使用您的 Array.enumerate() 方法

    【讨论】:

    • 这是第一次问题的答案已经在问题标题中了。
    • 如果您想使用for index in self.products.indices,如果您不想使用该项目,则不需要enumerate
    • 我把问题说得更清楚了,假设我们需要索引和对象。
    • @Sulthan OP 也提供了他自己的答案。此外,这与 Swift 2.2 无关, enumerate() 从 Swift 2.0 开始就存在。
    猜你喜欢
    • 2016-07-10
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    相关资源
    最近更新 更多