Skip to content

Instantly share code, notes, and snippets.

@amomchilov
Created January 16, 2018 18:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amomchilov/df144a2bee19b627e2163254a42a8a59 to your computer and use it in GitHub Desktop.
Save amomchilov/df144a2bee19b627e2163254a42a8a59 to your computer and use it in GitHub Desktop.
// 1. Don't compare to `nil`, only to force unwrap later. Just use conditional binding:
func allOfferCards() -> [OfferCard]{
guard let dataSource = dataSource else { return [] }
let numberOfCards = self.dataSource.kolodaNumberOfCards(self)
var offerCards = [OfferCard]()
for i in 0..<numberOfCards {
let offerCard = viewForCard(at: i)
if let offerCard = offerCard {
offerCards.append(offerCard as! OfferCard)
}
}
return offerCards
}
// 2. use map, instead of repeated appends:
func allOfferCards() -> [OfferCard]{
guard let dataSource = dataSource else { return [] }
let numberOfCards = self.dataSource.kolodaNumberOfCards(self)
var offerCards = (0..<numberOfCards).map { viewForCard(at: $0) as! OfferCard }
return offerCards
}
// 3. Inline offerCards
func allOfferCards() -> [OfferCard]{
guard let dataSource = dataSource else { return [] }
let numberOfCards = self.dataSource.kolodaNumberOfCards(self)
return (0..<numberOfCards).map { viewForCard(at: $0) as! OfferCard }
}
// 4. simplify logic (if dataSource is nil, take `numberOfCards` to be zero, which will
// make map result in an empty array)
func allOfferCards() -> [OfferCard]{
let numberOfCards = self.dataSource?.kolodaNumberOfCards(self) ?? 0
return (0..<numberOfCards).map { viewForCard(at: $0) as! OfferCard }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment