Skip to content

Instantly share code, notes, and snippets.

View bobleesj's full-sized avatar
🎯
Focusing

Sangjoon Bob Lee bobleesj

🎯
Focusing
View GitHub Profile

밋업 Hyperconnect 장소 스폰서 문의

목적

Hyperconnect 장소 대관을 위해 이번 밋업에 대해 소개서를 작성해보았습니다. Blockchain Korea Summit은 소/중 규모 블록체인 모임입니다. 초보자 분들도 모두 모여 삼삼오오 블록체인에 관해 배우고 정보를 공유하는 밋업을 주최하는 것이 목표입니다. 입장료 또한 무료로 생각하고 있습니다.

주최자

  • Bob Lee - iOS/Swift 및 블록체인 강사. 미디엄 #1 Swift/iOS 블로거. 다수 암호화폐 투자 커뮤니티 운영 및 관리.
  • 김성덕 - 카톨릭 의과대학 대학원 바이러스 연구. Achain 및 FarmaTrust 국내 커뮤니티 매니저.
  • 김장겸 - 카이스트 박사과정 연구원. 블록체인 개발 및 ICO 컨설팅.
@bobleesj
bobleesj / rxswift-korean.md
Created September 21, 2017 23:13
밥과 RxSwift 시작해보기

커버 이미지

Getting Started RxSwift with Bob

Why Learn Reactive Programming with RxSwift

Motivation

I'd like to begin this article by sharing my frustration with a pool of misleading and often "this is how it just works" articles floating around the internet. I'm tired of seeing myself getting tired after having read through the first 10 pages of the Google search.

I've conducted over 1000+ survey results from the iOS developers and students. RxSwift has been brought up often times. Yet, most of them tend not to use this framework for there is a steep learning curve.

Now I see why. There aren't many people who can explain the concept using analogy and stories. You've come to the right place. I've decided to get my hands dirty with RxSwift and contribute to this phenomenal community.

// Define Error Type
enum CourseError: Error {
case noName
}
// Create Structure
struct UdemyCourse {
let courseName: String
init(name: String) throws {
if name == “” { throw CourseError.noName }
class BuzzableTextField: UITextField, Buzzable {}
class BuzzableButton: UIButton, Buzzable {}
class BuzzableImageView: UIImageView, Buzzable {}
class BuzzablePoppableLabel: UILabel, Buzzable, Poppable {}
class LoginViewController: UIViewController {
@IBOutlet weak var passcodTextField: BuzzableTextField!
@IBOutlet weak var loginButton: BuzzableButton!
@IBOutlet weak var errorMessageLabel: BuzzablePoppableLabel!
@IBOutlet weak var profileImageView: BuzzableImageView!
class BuzzableTextField: UITextField, Buzzable {}
class BuzzableButton: UIButton, Buzzable {}
class BuzzableImageView: UIImageView, Buzzable {}
class BuzzablePoppableLabel: UILabel, Buzzable, Poppable {}
class LoginViewController: UIViewController {
@IBOutlet weak var passcodTextField: BuzzableTextField!
@IBOutlet weak var loginButton: BuzzableButton!
@IBOutlet weak var errorMessageLabel: BuzzablePoppableLabel!
@IBOutlet weak var profileImageView: BuzzableImageView!
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let task = tasks[indexPath.row]
context.delete(task)
(UIApplication.shared.delegate as! AppDelegate).saveContext()
do {
tasks = try context.fetch(Task.fetchRequest())
} catch {
print("Fetching Failed")
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let task = tasks[indexPath.row]
context.delete(task)
(UIApplication.shared.delegate as! AppDelegate).saveContext()
do {
tasks = try context.fetch(Task.fetchRequest())
} catch {
print("Fetching Failed")
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let task = tasks[indexPath.row]
if let myName = task.name {
cell.textLabel?.text = myName
}
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var tasks: [Task] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self