Skip to content

Instantly share code, notes, and snippets.

View barisuyar's full-sized avatar
🎯
Focusing

Barış Uyar barisuyar

🎯
Focusing
View GitHub Profile
final class ViewController: UIViewController {
@IBOutlet private weak var tableView: UITableView!
@IBOutlet private weak var searchTextField: UITextField!
@Filtered() var people: [Person] = [
.init(name: "Luke Skywalker", height: 172, gender: "male"),
.init(name: "Darth Vader", height: 202, gender: "male"),
.init(name: "Leia Organa", height: 150, gender: "female"),
.init(name: "Owen Lars", height: 178, gender: "male"),
@barisuyar
barisuyar / swPeopleArray.swift
Created November 7, 2022 13:51
SW People Array
@Filtered() var people: [Person] = [
.init(name: "Luke Skywalker", height: 172, gender: "male"),
.init(name: "Darth Vader", height: 202, gender: "male"),
.init(name: "Leia Organa", height: 150, gender: "female"),
.init(name: "Owen Lars", height: 178, gender: "male"),
.init(name: "Beru Whitesun Lars", height: 165, gender: "female")
]
@barisuyar
barisuyar / swPerson.swift
Created November 7, 2022 13:49
SW Person
struct Person: Filterable {
var name: String
var height: Int
var gender: String
var filterString: String { name + gender }
}
@barisuyar
barisuyar / filtered.swift
Last active November 7, 2022 12:57
Filtered
@propertyWrapper
struct Filtered<T> where T: Filterable {
var filterString: String = ""
var wrappedValue: [T] = []
var filtered: [T] {
guard !filterString.isEmpty else { return wrappedValue }
return wrappedValue.filter({
$0.filterString.lowercased().range(of: filterString,
options: .caseInsensitive,
@barisuyar
barisuyar / fiterable.swift
Created November 7, 2022 12:51
Filterable
protocol Filterable {
var filterString : String { get }
}
@barisuyar
barisuyar / callService.swift
Created September 8, 2022 08:38
Call mock service
final class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
URLProtocol.registerClass(MockURLProtocol.self)
guard let url = URL(string: "www.google.com.tr") else { return }
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data,
let person = try? JSONDecoder().decode(Person.self, from: data) else { return }
@barisuyar
barisuyar / registerProtocol.swift
Created September 8, 2022 07:42
registering protocol
URLProtocol.registerClass(MockURLProtocol.self)
@barisuyar
barisuyar / startLoading.swift
Created September 8, 2022 07:37
override startLoading
final class MockURLProtocol: URLProtocol {
override class func canInit(with request: URLRequest) -> Bool {
true
}
override class func canonicalRequest(for request: URLRequest) -> URLRequest { request }
override func stopLoading() { }
override func startLoading() {
let jsonString = """
{
@barisuyar
barisuyar / person.swift
Created September 8, 2022 07:32
Person
struct Person: Codable {
var name: String
var age: Int
}
@barisuyar
barisuyar / MockURLProtocol.swift
Created September 7, 2022 13:31
canonicalRequest and stopLoading
final class MockURLProtocol: URLProtocol {
override class func canInit(with request: URLRequest) -> Bool { true }
override class func canonicalRequest(for request: URLRequest) -> URLRequest { request }
override func stopLoading() { }
}