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