Я пытаюсь ограничить мой массив [String] только пятью значениями с помощью swifts .prefix
Сначала я беру исходный массив items
и склеиваю его с помощью .prefix
let testSlice = Array(items.prefix(5))
let newArray = Array(testSlice)
Затем я проверил, что массив содержит только пять значений со строкой печати.
print("DEV: newArray value: \(newArray)")
if newArray != [] {
cell.profilePicture.playPortalProfilePic(forImageId: newArray[indexPath.item], { error in
if let error = error {
print("Error requesting profile pic: \(String(describing: error))")
}
})
} else {
print("items array was empty, value: \(items)")
}
Затем newArray передается методу, предоставленному SDK, который я использую для отправки запросов на profilePictures.NewArray содержит эти значения, поэтому здесь [indexPath.item] подходит.Когда он работает правильно, он создает ячейки в представлении коллекции в зависимости от количества значений в массиве.
В настоящее время я вижу Fatal error: Index out of range
, когда эта строка пытается выполнить cell.profilePicture.playPortalProfilePic(forImageId: newArray[indexPath.item]
РЕДАКТИРОВАТЬ: Код запрашивается комментариями
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.items.count
}
Полный метод для cell.profilePicture.playPortalProfilePic(forImageId: newArray[indexPath.item]
строки
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell
cell.profilePicture.layer.masksToBounds = true
let testSlice = Array(items.prefix(5))
let newArray = Array(testSlice)
print("DEV: newArray value: \(newArray)")
if newArray != [] {
cell.profilePicture.playPortalProfilePic(forImageId: newArray[indexPath.item], { error in
if let error = error {
print("Error requesting profile pic: \(String(describing: error))")
}
}
)
} else {
print("items array was empty, value: \(items)")
}
cell.backgroundColor = UIColor.cyan
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8
return cell
}