Skip to content

Instantly share code, notes, and snippets.

View IhwanID's full-sized avatar

Ihwan IhwanID

View GitHub Profile
@IhwanID
IhwanID / main.swift
Last active February 1, 2024 13:00
Given a set of numbers, determine if there is a pair that equals a given sum.
View main.swift
//func hasPairWithSum(_ arr: [Int], _ sum: Int) -> Bool {
//
// for i in 0..<arr.count {
// for j in i + 1..<arr.count {
// if arr[i] + arr[j] == sum {
// return true
// }
// }
// }
// return false
@IhwanID
IhwanID / CocoaStandard.sdef
Created June 23, 2023 03:41
Apple Standard SDEF file
View CocoaStandard.sdef
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<dictionary title="Standard Terminology">
<suite name="Standard Suite" code="????" description="Common classes and commands for all applications.">
<command name="open" code="aevtodoc" description="Open a document.">
<direct-parameter description="The file(s) to be opened.">
<type type="file"/>
@IhwanID
IhwanID / main.swift
Created February 7, 2023 23:35
Self Sizing CollectionView
View main.swift
if let collectionViewLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
collectionViewLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
}
@IhwanID
IhwanID / news.json
Created March 8, 2022 14:27
Mock JSON NewsAPI
View news.json
{"status":"ok","totalResults":38,"articles":[{"source":{"id":null,"name":"Kompas.com"},"author":"Rendika Ferri Kurniawan","title":"Fakta-fakta 8 Planet di Tata Surya dan Kemungkinan Planet Kesembilan - Kompas.com - KOMPAS.com","description":"Ada planet-planet yang bergerak tak searah jarum jam, bahkan porosnya miring. Ada juga yang berwarna merah tapi justru dingin. Ini fakta-fakta planet.","url":"https://www.kompas.com/tren/read/2022/03/08/193100965/fakta-fakta-8-planet-di-tata-surya-dan-kemungkinan-planet-kesembilan","urlToImage":"https://asset.kompas.com/crops/zJuFpHFHSpTLKGj4GElqaUkMx1s=/150x4:835x460/780x390/filters:watermark(data/photo/2020/03/10/5e6775d554370.png,0,-0,1)/data/photo/2021/04/19/607cec3127dfa.jpg","publishedAt":"2022-03-08T12:31:00Z","content":null},{"source":{"id":null,"name":"Kompas.com"},"author":"Reska K. Nistanto","title":"Cara Nonton Apple Event Malam Ini, iPhone SE 3 Bakal Meluncur? - Kompas.com - Tekno Kompas.com","description":"Apple akan menggelar acara peluncuran bertajuk 'Peek
@IhwanID
IhwanID / test.swift
Created August 27, 2021 22:39
Track Memory Leaks Unit Test with XCTestCase Extension
View test.swift
import XCTest
extension XCTestCase{
func trackMemoryLeaks(_ instance: AnyObject, file: StaticString = #file, line: UInt = #line){
addTeardownBlock { [weak instance] in
XCTAssertNil(instance, "Instance should have been deallocated. Potential memory leak.", file: file, line: line)
}
}
}
@IhwanID
IhwanID / main.swift
Last active August 17, 2021 12:29
Intro to Dependency Diagrams and Composition
View main.swift
import UIKit
class FeedViewController: UIViewController{
var loadFeed: ((([String]) -> Void) -> Void)!
convenience init(loadFeed: @escaping (([String]) -> Void) -> Void){
self.init()
self.loadFeed = loadFeed
}
@IhwanID
IhwanID / main.swift
Created March 15, 2021 01:22
For Where in Swift
View main.swift
let numbers = [1, 2, 3 , 4 , 5, 6]
for number in numbers{
if number.isMultiple(of: 2){
print(number)
}
}
for number in numbers where number.isMultiple(of: 2){
print(number)
@IhwanID
IhwanID / Optional+Ext.swift
Created March 15, 2021 01:16
String OrEmpty Optional Extension
View Optional+Ext.swift
extension Optional where Wrapped == String{
var orEmpty: String{
switch self{
case .some(let value):
return value
case .none:
return ""
}
}
}
@IhwanID
IhwanID / main.swift
Last active February 5, 2021 15:26
Combine Many Merge Pokemon API
View main.swift
//
// ViewController.swift
// Pokemon
//
// Created by Ihwan ID on 04/02/21.
//
import UIKit
import Combine
@IhwanID
IhwanID / main.swift
Created January 31, 2021 06:26
Two Sum in Swift
View main.swift
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
var dictionary = [Int:Int]();
for index in 0 ..< nums.count {
let complement = target - nums[index];
if dictionary.keys.contains(complement) && dictionary[complement] != index {
return [dictionary[complement]!,index];
}
dictionary[nums[index]] = index
}