ios - 转换数组的最有效方法

原文 标签 ios arrays swift casting

我正在使用一个框架,该框架从设备的缓存异步加载数据并返回它。但是,我无法更改其定义的方法将返回一个AnyObject s数组。我有一个名为Attendee的类,我确定这些对象属于其中。我需要将[AnyObject]数组转换为[Attendee]数组。目前,我通过在返回的数组中进行集成,对每个对象进行类型转换并将其存储在其他位置来进行此操作。我试图只对数组进行类型转换,但是在类型转换中却遇到了快速的运行时错误。是否有比仅循环遍历[AnyObject][Attendee]更有效的方法?

var attendees: [Attendee] = []
let query = PFQuery(className: "Attendee")
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
    if( error == nil ) {
        attendees = objects as! [Attendee]
    } else {
        println("Error fetching attendees: \(error) ")
    }
}


与会者类别定义

class Attendee: PFObject, PFSubclassing {

    override class func initialize() {
        var onceToken : dispatch_once_t = 0;
        dispatch_once(&onceToken) {
            self.registerSubclass()
        }
    }

    class func parseClassName() -> String! {
        return "Attendee"
    }


}

最佳答案

有没有比将其循环遍历更有效的方法将[AnyObject]转换为[Attendee]


不能。即使直接使用as!强制转换也会隐藏循环,因为它必须强制转换单个对象。实际上,这就是您崩溃的原因-隐藏的循环到达了数组中无法强制转换的对象。

关于ios - 转换数组的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166333/

相关文章:

ios - Objective-C - 从核心数据检索一对多关系数据

ios - didSelectRow未记录良好的单元触摸

arrays - JOLT 变换将相同的元素添加到所有数组中

java - Android:指定数组大小?

javascript - 如何使用多个参数过滤对象数组

ios - 从文档目录的子文件夹中获取文件列表 swift ios

swift - 在已显示暂停计时器的标签上显示已暂停并恢复的计时器

ios - 如何将参数传递给导航 Controller 内的弹出 View Controller

ios - 从选项卡栏 Controller 中按下时,为什么 View Controller 会变黑?

ios - Apple FairPlay key 服务器模块实现