如何在Swift中转换NSArray的元素类型

如何在Swift中转换NSArray的元素类型,swift,Swift,我创建了一个NSFetchedResultsController 然后在numberOfRowsInSection方法中,我想检查第一节中的行号 override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int { var numberOfRowsInSection = 0 if _frcU { /*here som

我创建了一个NSFetchedResultsController

然后在numberOfRowsInSection方法中,我想检查第一节中的行号

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {

            var numberOfRowsInSection = 0
            if _frcU {
/*here something  wrong -> */ let o: NSFetchedResultsSectionInfo = _frcU?.sections().firstObject as NSFetchedResultsSectionInfo
                numberOfRowsInSection = o.numberOfObjects
            }
        }
但它说:ST6 firstObject不符合协议“NSFetchedResultsSectionInfo”

为什么,我应该如何重新措辞?

工作解决方案是:

numberOfRowsInSection = ((_frcU!.sections as NSArray).firstObject as NSFetchedResultsSectionInfo).numberOfObjects
有两个基本区别

一!!标记


2向NSArray施放的方法如下:

    let sectionInfo = _frcU.sections[section] as NSFetchedResultsSectionInfo
    let numberOfRowsInSection = sectionInfo.numberOfObjects

您可以在xCode中查看默认的主细节应用程序模板。项目可以在Swift中创建,因此关于如何在Swift中完成工作,有很多东西需要学习。

您可以尝试更改为吗?当将firstObject的返回值强制转换为NSFetchedResultsSectionInfo时?我尝试了它,这不仅仅是为了我的教育:您的工作示例和OP的有什么区别?是用_frcU代替_frcU?,还是用数组表示法代替firstObject?_frcU?在调用下一个操作之前检查nil,但是_frcU应该是可选的。您是否将_fcrU定义为NSFetchedResultController?那么我也应该加上它。firstObject是NSArray类中的一个方法,您可以在强制转换后调用它,从而使代码变得更长、更难阅读。对,我熟悉optionals和firstObject方法,我只是好奇是什么具体导致了János版本失败,以及您的版本是否正常工作。谢谢
    let sectionInfo = _frcU.sections[section] as NSFetchedResultsSectionInfo
    let numberOfRowsInSection = sectionInfo.numberOfObjects