J'ai récemment converti mon code en Swift 3.0. Mes méthodes de source de données de vue de collection et de table contiennent désormais IndexPath
au lieu de NSIndexPath
dans leur signature de méthode. Mais toujours dans la définition de la méthode, il s'agit de transtyper IndexPath en NSIndexPath.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell : NNAmenitiesOrFurnishingCollectionViewCell = self.amenitiesOrFurnishingCollectionView.dequeueReusableCell(withReuseIdentifier: "NNAmenitiesOrFurnishingCollectionViewCell", for: indexPath) as! NNAmenitiesOrFurnishingCollectionViewCell
cell.facilityImageName = self.facilityArray[(indexPath as NSIndexPath).row].imageName
cell.facilityLabelString = self.facilityArray[(indexPath as NSIndexPath).row].labelText
return cell
}
Quelqu'un peut-il me dire pourquoi indexPath
est converti en NSIndexPath
.
Il n'y a aucune raison de convertir IndexPath
en NSIndexPath
ici. Le type de superposition Swift 3 IndexPath
a des propriétés
/// The section of this index path, when used with `UITableView`.
///
/// - precondition: The index path must have exactly two elements.
public var section: Int
/// The row of this index path, when used with `UITableView`.
///
/// - precondition: The index path must have exactly two elements.
public var row: Int
auquel vous pouvez accéder directement:
cell.facilityImageName = self.facilityArray[indexPath.row].imageName
cell.facilityLabelString = self.facilityArray[indexPath.row].labelText
Apparemment, le migrateur Xcode n'a pas fait un travail parfait.