转换 Swift2 -> Swift3:任何错误

     2023-03-15     226

关键词:

【中文标题】转换 Swift2 -> Swift3:任何错误【英文标题】:Conversion Swift2 -> Swift3: Errors with Any 【发布时间】:2017-01-14 10:09:23 【问题描述】:

我正在使用来自 https://github.com/brightec/CustomCollectionViewLayout 的 CustomCollectionViewLayout。

在从 Swift2 转换到 Swift3 之后,出现了两个关于 Any 的错误。

错误1:

override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? 
    return self.itemAttributes[indexPath.section][indexPath.row] as! UICollectionViewLayoutAttributes

消息错误:

CustomCollectionViewLayout.swift:115:54: 类型 'Any' 没有下标成员

错误 2:

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? 
    var attributes = [UICollectionViewLayoutAttributes]()
    if self.itemAttributes != nil 
        for section in self.itemAttributes 

            let filteredArray  =  (section as AnyObject).filtered(

                using: NSPredicate(block:  (evaluatedObject, bindings) -> Bool in
                    return rect.intersects(evaluatedObject.frame)
                )
                ) as! [UICollectionViewLayoutAttributes]


            attributes.append(contentsOf: filteredArray)

        
    

    return attributes

消息错误:

“任何?”类型的值没有成员“框架”

任何想法如何解决 Any/AnyObject 的问题?

【问题讨论】:

我也面临同样的问题 【参考方案1】:

我解决了错误,将您的两种方法替换为以下方法

override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? 
        //return self.itemAttributes[indexPath.section][indexPath.row] as! UICollectionViewLayoutAttributes
        let arr = self.itemAttributes[indexPath.section] as! NSMutableArray
        return arr[indexPath.row] as! UICollectionViewLayoutAttributes
    


override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? 
        var attributes = [UICollectionViewLayoutAttributes]()
        if self.itemAttributes != nil 
            for section in self.itemAttributes 

                let filteredArray  =  (section as! NSMutableArray).filtered(

                    using: NSPredicate(block:  (evaluatedObject , bindings) -> Bool in
                        let a = evaluatedObject as! UICollectionViewLayoutAttributes
                        return rect.intersects(a.frame)
                    )
                    ) as! [UICollectionViewLayoutAttributes]


                attributes.append(contentsOf: filteredArray)

            
        

        return attributes
    

【讨论】:

将swift 2视频代码转换为swift 3视频代码

】将swift2视频代码转换为swift3视频代码【英文标题】:Convertswift2videocodeintoswift3videocode【发布时间】:2016-10-2520:42:49【问题描述】:下面的代码显示了一个视频。它在swift2中完美运行,但在swift3xcode中表明MPMoivePlayerController代码已... 查看详情

Swift 3.0 转换错误

】Swift3.0转换错误【英文标题】:Swift3.0convertingerror【发布时间】:2016-09-2414:54:59【问题描述】:我有一个Swift2.2项目。现在我正在尝试将其转换为Swift3.0但出现错误。斯威夫特2.2:importQuartzCore.QuartzCore但是这段代码出现错误。Swif... 查看详情

类型“任何”没有下标成员[重复]

...ift3.0时出现错误(“Any”类型没有下标成员),谁能帮我转换代码。doletjson=tryJSONSerialization.jsonObject(with:data!,op 查看详情

Swift 2 到 Swift 3 转换 Midi Input

】Swift2到Swift3转换MidiInput【英文标题】:Swift2toswift3conversionMidiInput【发布时间】:2016-07-0803:09:43【问题描述】:我希望有人可以帮助我使用Xcode8和swift3我有一个操场文件Xcode7swift2,其中涉及MidiInput的Midi回调,在7中一切正常我尝... 查看详情

Swift3 中的 imageWithSize

...-2517:36:01【问题描述】:我正在将一个项目从Xcode7iOS9Swift2转换为Xcode8iOS10Swift3。我让Xcode转换为最新版本并生成:letartWork=delegate.musicPlayer.nowPlayingItem?.value(forProperty:MPMediaI 查看详情

从 Swift 2 转换为 Swift 3 时出错

】从Swift2转换为Swift3时出错【英文标题】:ErrorinconversionfromSwift2toSwift3【发布时间】:2016-09-2109:24:16【问题描述】:这是我正在努力将Swift2转换为Swift3的第二个也是最后一个部分旧的工作代码是funccalculateSegmentDirections(index:Int,time:... 查看详情

将 swift 2.3 转换为 swift 3 错误

】将swift2.3转换为swift3错误【英文标题】:Convertswift2.3toswift3error【发布时间】:2016-12-1815:09:46【问题描述】:我在xcode8.2中将swift2.3转换为swift3swift2.3:有代码,有代码,有代码,有代码,有代码funcplayAudio()self.stopAudio()letlessonObjec... 查看详情

swift2.3适配swift3.0时出现的各种问题

...话,Xcode7.3升级Xcode8.1看来也是势在必行了。公司程序是Swift2.3的,出于对苹果的恐惧迟迟不敢升级。但丑媳妇儿总要见公婆,借这个机会,也趁双休时间,做一下适配好了。  首先,强调一点。做好备份!做好备份!做好备份... 查看详情

“任何”的值类型没有成员 'objectforKey' Swift 3 转换

】“任何”的值类型没有成员\\\'objectforKey\\\'Swift3转换【英文标题】:Valuetypeof"Any"hasnomember\'objectforKey\'Swift3conversion“任何”的值类型没有成员\'objectforKey\'Swift3转换【发布时间】:2016-09-1907:41:52【问题描述】:由于swift3升... 查看详情

方法不会覆盖其超类 swift 3.0 错误中的任何方法 [重复]

...2016-08-2313:29:35【问题描述】:我正在将我的代码从swift2.2转换为swift3.0,并且我得到Methoddoesnotoverrideanymethodfromitssuperclas 查看详情

Alamofire - 从 Swift 2 转换为 Swift 3 时出错

】Alamofire-从Swift2转换为Swift3时出错【英文标题】:Alamofire-errorconvertingfromSwift2toswift3【发布时间】:2017-07-1907:39:53【问题描述】:我正在将我的项目从Swift2.3转换为Swift3.0。我们正在使用Alamofirepod进行联网。现在我遇到了NSError的... 查看详情

Swift 3 转换获取 'Int1' 不能转换为 'Bool'

】Swift3转换获取\\\'Int1\\\'不能转换为\\\'Bool\\\'【英文标题】:Swift3conversiongets\'Int1\'isnotconvertibleto\'Bool\'Swift3转换获取\'Int1\'不能转换为\'Bool\'【发布时间】:2016-09-1716:06:48【问题描述】:我正在将可编译并运行的Swift2代码转换为Sw... 查看详情

Swift 3 中的十进制到双精度转换

】Swift3中的十进制到双精度转换【英文标题】:DecimaltoDoubleconversioninSwift3【发布时间】:2016-10-0608:08:48【问题描述】:我正在将一个项目从Swift2.2迁移到Swift3,并且我正在尝试尽可能摆脱旧的Cocoa数据类型。我的问题在这里:将NS... 查看详情

indexAtPosition、urlRequest.url!.isEqual 的 swift 3 等效项

...ual【发布时间】:2016-10-0611:17:08【问题描述】:您好,从swift2.2升级到swift3时出现以下错误参数标签\'(atPosition:)\'不匹配任何可用的重载"下面是swift2.2中的 查看详情

.Map 从 Swift 2 转换后在 Swift 3 中生成 [T]

】.Map从Swift2转换后在Swift3中生成[T]【英文标题】:.Mapproducing[T]inSwift3afterConvertingfromSwift2【发布时间】:2016-11-1821:40:27【问题描述】:我刚刚将一个项目从Swift2转换为Swift3并收到错误,但我不明白为什么代码有问题:varimagesInProje... 查看详情

从 Swit2.3 到 Swift3 的转换导致“以 NSException 类型的未捕获异常终止”

】从Swit2.3到Swift3的转换导致“以NSException类型的未捕获异常终止”【英文标题】:ConversionfromSwit2.3toSwift3cause"TerminatingwithuncaughtexceptionoftypeNSException"【发布时间】:2017-01-1615:35:21【问题描述】:这是我想从Swift2.3转换为Swift... 查看详情

Swift 2 到 Swift 3.0 运动管理器

...6-09-0715:03:35【问题描述】:我正在将一个应用程序从swift2转换为swift3,并且我正在尝试使用CMMotionManager,但是当我尝试调用.startAccelerometerUpdates()函数时它给了我这个错误......虽然不知道出了什么问题。这是我初始化管理器的方... 查看详情

快速更新核心数据对象 3

...:您认为在Swift3中更新托管对象有何不同?您是否遇到了Swift2中没有出现的特定问题?如果是这样,请分享更多详细信 查看详情