Skip to content

Instantly share code, notes, and snippets.

@damijanracel
damijanracel / 0_reuse_code.js
Created June 3, 2016 07:24
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@damijanracel
damijanracel / UserPet.txt
Last active February 13, 2018 08:33
User and Pet
struct User {
let name: String
let nickname: String
}
struct Pet {
let name: String
let owner: String
let breed: String
let weight: Int
func set(with user: User) {
leftTitleLabel.text = user.name
leftSubtitleLabel.text = "Nick: " + user.nickname
hideImage()
}
func set(with pet: Pet) {
leftTitleLabel.text = pet.name
leftSubtitleLabel.text = "Owner: " + pet.owner
protocol ReusableTableViewCellDataProvider {
var leftTitle: String? { get }
var leftSubtitle: String? { get }
var rightTitle: String? { get }
var rightSubtitle: String? { get }
var image: UIImage? { get }
}
struct UserReusableCellDataProvider: ReusableTableViewCellDataProvider {
let user: User
var leftTitle: String? {
return user.name
}
var leftSubtitle: String? {
return "Nick: " + user.nickname
}
func set(with dataProvider: ReusableTableViewCellDataProvider) {
leftTitleLabel.text = dataProvider.leftTitle
leftSubtitleLabel.text = dataProvider.leftSubtitle
rightTitleLabel.text = dataProvider.rightTitle
rightSubtitleLabel.text = dataProvider.rightSubtitle
set(image: dataProvider.image)
}
private func set(image: UIImage?) {
guard let image = image else {
hideImage()
return
}
showImage()
iconImageView.image = image
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "ReusableTableViewCell") as? ReusableTableViewCell, indexPath.row < users.count else {
return UITableViewCell()
}
let user = users[indexPath.row]
let dataProvider = UserReusableCellDataProvider(user: user)
cell.set(with: dataProvider)
return cell
}
struct PetReusableCellDataProvider: ReusableTableViewCellDataProvider {
let pet: Pet
var leftTitle: String? {
return pet.name
}
var leftSubtitle: String? {
return "Owner: " + pet.owner
}
protocol HttpRequestProtocol {
init(method: HttpMethod, url: String, headers: [String: String], parameters: [String: Any], encoding: Encoding)
func run(completion: @escaping ((HttpResponse) -> Void))
}