From 57db131954bfd2ce11ec55e35c8a13c48f113ff5 Mon Sep 17 00:00:00 2001 From: "patrick.benny" Date: Thu, 27 Jul 2017 16:14:14 +0900 Subject: [PATCH] Fix typos, etc. --- README.md | 4 ++-- .../NavigationSample/ViewController.swift | 6 ++--- .../Model/GithubUser.swift | 4 ++-- .../ScrollViewSample/ViewController.swift | 22 ----------------- .../Model/GithubUser.swift | 4 ++-- Swift/pages/day1/1-1_swift-basics.md | 10 ++++---- Swift/pages/day1/1-2_memory-management.md | 2 +- .../1-4-1_ModalViewController-storyboard.md | 6 ++--- .../day1/1-4-2_ModalViewController-xib.md | 6 ++--- .../day1/1-5_UIViewController-lifecycle.md | 4 ++-- .../pages/day2/1-1_UINavigationController.md | 6 ++--- Swift/pages/day2/1-2_UITabController.md | 8 +++---- Swift/pages/day2/2-1_UIView.md | 6 ++--- Swift/pages/day2/2-3_UIView-Animation.md | 2 +- Swift/pages/day2/3-1_UITableView.md | 2 +- .../day2/3-3_UITableViewCell-customization.md | 6 ++--- .../day2/3-4_UITableView-other-options.md | 2 +- ...ic-height-with-a-custom-UITableViewCell.md | 2 +- Swift/pages/day2/HomeWork-UIScrollView.md | 3 ++- Swift/pages/day3/1-1_Closure.md | 2 +- .../pages/day3/2-1_UIImagePickerController.md | 2 +- Swift/pages/day3/3-2_FileManager.md | 8 +++---- Swift/pages/day3/4-1_JSON.md | 2 +- Swift/pages/day3/4-2_HTTP-request-basic.md | 2 +- Swift/pages/day4/1-2_CocoaPods.md | 6 ++--- Swift/pages/day4/2-1_class-design-1.md | 24 +++++++++---------- Swift/pages/day4/2-2_class-design-2.md | 4 ++-- 27 files changed, 67 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index f7e241a1..07d2b36d 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ SwiftでのiOSアプリ開発の基礎知識と実務スキルを身に付ける プロジェクト [day1/1.2](./before/day1/1.2) 3. ビューコントローラ - 課題 [1.3.1 UIViewControllerのカスタマイズ(stroyboard)](./pages/day1/1-3-1_UIViewController-customization-storyboard.md) + 課題 [1.3.1 UIViewControllerのカスタマイズ(storyboard)](./pages/day1/1-3-1_UIViewController-customization-storyboard.md) 補足 [1.3.2 UIViewControllerのカスタマイズ(xib)](./pages/day1/1-3-2_UIViewController-customization-xib.md) プロジェクト [day1/1.3](./before/day1/1.3) @@ -128,7 +128,7 @@ SwiftでのiOSアプリ開発の基礎知識と実務スキルを身に付ける 3. テキスト 課題 [2.3.1 KeyboardNotification](./pages/day3/2-3-1_KeyboardNotification.md) - 参考 [2.3.2 UITextFiled, UITextView](./pages/day3/2-3-2_UITextFiled-UITextView.md) + 参考 [2.3.2 UITextField, UITextView](./pages/day3/2-3-2_UITextFiled-UITextView.md) プロジェクト [day3/2.3](./before/day3/2.3) 3. ローカルキャッシュと通知 diff --git a/Swift/after/day2/1.1/NavigationSample/NavigationSample/ViewController.swift b/Swift/after/day2/1.1/NavigationSample/NavigationSample/ViewController.swift index 11bffcfe..2c76266f 100644 --- a/Swift/after/day2/1.1/NavigationSample/NavigationSample/ViewController.swift +++ b/Swift/after/day2/1.1/NavigationSample/NavigationSample/ViewController.swift @@ -36,11 +36,11 @@ class ViewController: UIViewController { default: return } - guard let viewContrller = storyboard?.instantiateViewController(withIdentifier: "NextViewController") as? NextViewController else { + guard let viewController = storyboard?.instantiateViewController(withIdentifier: "NextViewController") as? NextViewController else { return } - viewContrller.buttonString = buttonString - navigationController?.pushViewController(viewContrller, animated: true) + viewController.buttonString = buttonString + navigationController?.pushViewController(viewController, animated: true) } } diff --git a/Swift/after/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift b/Swift/after/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift index c0a983a6..bb29d388 100644 --- a/Swift/after/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift +++ b/Swift/after/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift @@ -15,8 +15,8 @@ struct GithubUser: GithubEntity { init?(json: JSON) { guard - let rawAvatorUrl = json["avatar_url"].string, - let avatarUrl = URL(string: rawAvatorUrl), + let rawAvatarUrl = json["avatar_url"].string, + let avatarUrl = URL(string: rawAvatarUrl), let login = json["login"].string else { return nil } diff --git a/Swift/before/day2/homework/ScrollViewSample/ScrollViewSample/ViewController.swift b/Swift/before/day2/homework/ScrollViewSample/ScrollViewSample/ViewController.swift index 68939b1d..dada9b1a 100644 --- a/Swift/before/day2/homework/ScrollViewSample/ScrollViewSample/ViewController.swift +++ b/Swift/before/day2/homework/ScrollViewSample/ScrollViewSample/ViewController.swift @@ -13,22 +13,6 @@ class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. - - let scrollView = UIScrollView(frame: view.frame) - view.addSubview(scrollView) - - let image = UIImage(named:"big_image")! - let scale = UIScreen.main.scale - let size = CGSize(width: image.size.width * scale, height: image.size.height * scale) - let imageView = UIImageView(frame:CGRect(origin: .zero, size: size)) - - imageView.image = image - - scrollView.addSubview(imageView) - scrollView.contentSize = imageView.frame.size - scrollView.maximumZoomScale = 3 - scrollView.minimumZoomScale = 0.5 - scrollView.delegate = self } override func didReceiveMemoryWarning() { @@ -42,10 +26,4 @@ class ViewController: UIViewController { //MARK: - UIScrollViewDelegate extension ViewController: UIScrollViewDelegate { // TODO: UIScrollViewDelegateのメソッドを追加 - func viewForZooming(in scrollView: UIScrollView) -> UIView? { - for imageView in scrollView.subviews where imageView is UIImageView { - return imageView - } - return nil - } } diff --git a/Swift/before/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift b/Swift/before/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift index c0a983a6..bb29d388 100644 --- a/Swift/before/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift +++ b/Swift/before/day4/homework/GithubStarListSample/GithubStarListSample/Model/GithubUser.swift @@ -15,8 +15,8 @@ struct GithubUser: GithubEntity { init?(json: JSON) { guard - let rawAvatorUrl = json["avatar_url"].string, - let avatarUrl = URL(string: rawAvatorUrl), + let rawAvatarUrl = json["avatar_url"].string, + let avatarUrl = URL(string: rawAvatarUrl), let login = json["login"].string else { return nil } diff --git a/Swift/pages/day1/1-1_swift-basics.md b/Swift/pages/day1/1-1_swift-basics.md index 37bcd22d..c6df4fb7 100644 --- a/Swift/pages/day1/1-1_swift-basics.md +++ b/Swift/pages/day1/1-1_swift-basics.md @@ -422,7 +422,7 @@ struct Person { ## propertyの値を監視 -`wiiSet`や`didSet`を使うことで、propertyの値の変更を監視することができます。 +`willSet`や`didSet`を使うことで、propertyの値の変更を監視することができます。 ```swift class Person { @@ -508,7 +508,7 @@ enum enum名: 型名 { ```swift enum Gender: Int { - case man = 0 + case male = 0 case female = 1 } @@ -519,11 +519,11 @@ Intに限らず、型にStringなど指定できます。 ```swift enum Gender: String { - case man = "man" + case male = "male" case female = "female" } -let gender = Gender(rawValue: "man") +let gender = Gender(rawValue: "male") ``` 型を指定せずに使うこともできます。 @@ -948,7 +948,7 @@ print(queryParameter) ```swift enum Gender: Int { - case man = 0 + case male = 0 case female = 1 } diff --git a/Swift/pages/day1/1-2_memory-management.md b/Swift/pages/day1/1-2_memory-management.md index ad7e85e2..50701d37 100644 --- a/Swift/pages/day1/1-2_memory-management.md +++ b/Swift/pages/day1/1-2_memory-management.md @@ -22,7 +22,7 @@ ARC では上記の retain, release はコンパイラが自動で補完して ## 強参照 -参照先のオブジェクトのオーナーシップを持っています。自分がそのオブジェクトの参照を無くすまで確実に参照することができます。swif3では変数を宣言するとデフォルトでは強参照として宣言されます。 +参照先のオブジェクトのオーナーシップを持っています。自分がそのオブジェクトの参照を無くすまで確実に参照することができます。Swift 3では変数を宣言するとデフォルトでは強参照として宣言されます。 ## 弱参照 diff --git a/Swift/pages/day1/1-4-1_ModalViewController-storyboard.md b/Swift/pages/day1/1-4-1_ModalViewController-storyboard.md index d26849ad..baa109fc 100644 --- a/Swift/pages/day1/1-4-1_ModalViewController-storyboard.md +++ b/Swift/pages/day1/1-4-1_ModalViewController-storyboard.md @@ -137,7 +137,7 @@ storyboardを使いつつ、ただsegueを利用しない、という方法に では実際に生成して表示します。 -生成するには UIStroyboardのインスタンスメソッド [`instantiateInitialViewController()`](https://developer.apple.com/reference/uikit/uistoryboard/1616213-instantiateinitialviewcontroller)を用います。 +生成するには UIStoryboardのインスタンスメソッド [`instantiateInitialViewController()`](https://developer.apple.com/reference/uikit/uistoryboard/1616213-instantiateinitialviewcontroller)を用います。 このメソッドの引数に先ほど定義したstoryboardIDを渡します。UIViewControllerがstoryboardから生成された場合、プロパティにstoryboardがあるのでそれを利用します。 ViewControllerからViewControllerを表示するにはメソッド [`present(_:animated:completion:)`](https://developer.apple.com/reference/uikit/uiviewcontroller/1621380-present) を用います。 @@ -160,7 +160,7 @@ ViewControllerからViewControllerを表示するにはメソッド [`present(_: ## ModalViewControllerを閉じる -ModalViewControllerを表示できたら、次はModalViewControllerを閉じる方法について解説します。 +ModalViewControllerを表示できたら、次はModalViewControllerを閉じる方法について解説します。 閉じ方はdelegateパターンを用いる方法とUnwind Segue を使う方法の2パターンがあります。 ### delegateパターンを用いて閉じる @@ -351,7 +351,7 @@ SecondViewController上に新しくボタンを追加し、そのボタンをタ * 戻り値の型は `IBAction` 型 * 引数は一つだけで、その型は `UIStoryboardSegue` への参照 (i.e. `UIStoryboardSegue *`型) -これはstoryboardとこのメソッドを紐づけるための制約になります。メソッド名には特に制約はありません。 +これはstoryboardとこのメソッドを紐づけるための制約になります。メソッド名には特に制約はありません。 例えば以下のようにメソッドを定義してください。 ```swift diff --git a/Swift/pages/day1/1-4-2_ModalViewController-xib.md b/Swift/pages/day1/1-4-2_ModalViewController-xib.md index 8aa2ba13..a9e5fc7f 100644 --- a/Swift/pages/day1/1-4-2_ModalViewController-xib.md +++ b/Swift/pages/day1/1-4-2_ModalViewController-xib.md @@ -66,13 +66,13 @@ public enum UIModalPresentationStyle : Int { ```swift dismiss(animated: true, completion: nil) ``` -このメソッドを呼べば、トップレベルの ModalViewController が dismiss されます。公式ドキュメントには原則として呼び出した ViewControlelr が消すべきと書いてあります。状況に応じて使い分けてください。 +このメソッドを呼べば、トップレベルの ModalViewController が dismiss されます。公式ドキュメントには原則として呼び出した ViewController が消すべきと書いてあります。状況に応じて使い分けてください。 ![dismissViewController](https://raw.github.com/mixi-inc/iOSTraining/master/Doc/Images/1.5/dismissViewController.png) ## delegate と protocol -ChildViewController で閉じるボタンを押したことを ViewControlelr が知る必要があります。このようにある VC から VC へ何らかの通知を送る手段の一つとして delegate があります。 +ChildViewController で閉じるボタンを押したことを ViewController が知る必要があります。このようにある VC から VC へ何らかの通知を送る手段の一つとして delegate があります。 ![delegate](https://raw.github.com/mixi-inc/iOSTraining/master/Doc/Images/1.5/delegate.png) @@ -101,7 +101,7 @@ class ChildViewController : UIViewController { ### [1] protocol -プロトコルはメッソド宣言の集合体です。上記では、ChildViewController が ChildViewControllerDelegate というプロトコルで、他のクラスに任せたいメソッドを宣言しています。 +プロトコルはメソッド宣言の集合体です。上記では、ChildViewController が ChildViewControllerDelegate というプロトコルで、他のクラスに任せたいメソッドを宣言しています。 ### [2] delegate オブジェクト diff --git a/Swift/pages/day1/1-5_UIViewController-lifecycle.md b/Swift/pages/day1/1-5_UIViewController-lifecycle.md index 67a8a702..b3ab4787 100644 --- a/Swift/pages/day1/1-5_UIViewController-lifecycle.md +++ b/Swift/pages/day1/1-5_UIViewController-lifecycle.md @@ -58,7 +58,7 @@ override func viewDidLoad() { インスタンスが生成され、viewが表示されるタイミングでは [`viewWillAppear(_:)`](https://developer.apple.com/reference/uikit/uiviewcontroller/1621510-viewwillappear) と -[`viewDidAppear(_:)`](https://developer.apple.com/reference/uikit/uiviewcontroller/1621423-viewdidappear)が呼ばれます。それぞれ、viewが表示される直前とviewが表示完了した直後に呼ばれます。例えばアニメーションを行ってViewControllerを表示する場合、 +[`viewDidAppear(_:)`](https://developer.apple.com/reference/uikit/uiviewcontroller/1621423-viewdidappear)が呼ばれます。それぞれ、viewが表示される直前とviewが表示完了した直後に呼ばれます。例えばアニメーションを行ってViewControllerを表示する場合、 `viewWillAppear(_:)` → 表示アニメーション → `viewDidAppear(_:)` の順に呼び出されます。 @@ -128,6 +128,6 @@ UIViewController固有のものではなくSwiftのclassで実装できるメソ ```swift deinit { - print("dealloc"); + print("deinit"); } ``` diff --git a/Swift/pages/day2/1-1_UINavigationController.md b/Swift/pages/day2/1-1_UINavigationController.md index 018bb26d..581269e2 100644 --- a/Swift/pages/day2/1-1_UINavigationController.md +++ b/Swift/pages/day2/1-1_UINavigationController.md @@ -54,7 +54,7 @@ storyboard上にUINavigationControllerを配置してください。 ![](./images/1_1/image2.png) -Initial View Controllerの指定方法は、[day1 1.3.1 UIViewControllerのカスタマイズ(stroyboard)](https://ghe.ca-tools.org/suzuki-taiki/natibootcamp-ios/blob/master/pages/day1/1-3-1_UIViewController-customization-storyboard.md#initial-view-controller%E3%81%AB%E8%A8%AD%E5%AE%9A)で説明しているので割愛します。 +Initial View Controllerの指定方法は、[day1 1.3.1 UIViewControllerのカスタマイズ(storyboard)](https://ghe.ca-tools.org/suzuki-taiki/natibootcamp-ios/blob/master/pages/day1/1-3-1_UIViewController-customization-storyboard.md#initial-view-controller%E3%81%AB%E8%A8%AD%E5%AE%9A)で説明しているので割愛します。 ##### 2 ViewControllerをNavigationControllerのRoot View Controllerに指定 @@ -81,10 +81,10 @@ ViewControllerのstoryboard ID はクラス名と同じで、ViewController ```swift // ViewController.swift @IBAction func pushButtonTapped(_ sender: UIButton) { - guard let viewControlelr = storyboard?.instantiateViewController(withIdentifier: "ViewController") as? ViewController else { + guard let viewController = storyboard?.instantiateViewController(withIdentifier: "ViewController") as? ViewController else { return } - navigationController?.pushViewController(viewControlelr, animated: true) + navigationController?.pushViewController(viewController, animated: true) } ``` diff --git a/Swift/pages/day2/1-2_UITabController.md b/Swift/pages/day2/1-2_UITabController.md index f73fc4f6..49aec0a4 100644 --- a/Swift/pages/day2/1-2_UITabController.md +++ b/Swift/pages/day2/1-2_UITabController.md @@ -49,7 +49,7 @@ AppDelegate.swift ```swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. - if let tabBarContorller = window?.rootViewController as? UITabBarController { + if let tabBarController = window?.rootViewController as? UITabBarController { let viewControllers: [UIViewController] = [ FirstViewController(imageName: "first"), FirstViewController(imageName: "second"), @@ -58,13 +58,13 @@ func application(_ application: UIApplication, didFinishLaunchingWithOptions lau FirstViewController(imageName: "fifth"), FirstViewController(imageName: "sixth") ] - tabBarContorller.viewControllers = viewControllers + tabBarController.viewControllers = viewControllers } return true } ``` -画像ファイルは[こちら](./images/day2/1_2/icons) +画像ファイルは[こちら](./images/1_2/icons) ## tab のバッジ > ![tabBadge](https://raw.github.com/mixi-inc/iOSTraining/master/Doc/Images/2.2/tabBadge.png) @@ -106,6 +106,6 @@ Storyboardを用いることで、視覚的にTabBarControllerとその中に入 # 演習 * storyboard上のTabBarControllerに対して、新しくViewController(ThirdViewController)を追加してください。 -* xibからロードしたViewContorller(FourthViewController)を更に追加してください。 +* xibからロードしたViewController(FourthViewController)を更に追加してください。 解答は [after/day2/1.2/TabSample](../../after/day2/1.2/TabSample) をごらんください diff --git a/Swift/pages/day2/2-1_UIView.md b/Swift/pages/day2/2-1_UIView.md index 5bc1c6cf..49eb3eab 100644 --- a/Swift/pages/day2/2-1_UIView.md +++ b/Swift/pages/day2/2-1_UIView.md @@ -11,7 +11,7 @@ UIView クラスは大きく分けて以下の役割を持っています。 - アニメーション - イベント処理 (タップやピンチインなど) -画面上に表示するもの自身としての役割と、階層構造で UIVeiwを管理している、という点をまず抑えてください。 +画面上に表示するもの自身としての役割と、階層構造で UIViewを管理している、という点をまず抑えてください。 以下では UIView の利用方法と仕組みについて説明します。 ## コンテンツの描画 @@ -20,8 +20,8 @@ UIView クラスは大きく分けて以下の役割を持っています。 ### UIViewをコード上で利用する -UIViewの初期化は、「コード上で行う方法」と storybaord や xib のように 「Interface Builderを利用する方法」とがあります。 -今までの章でstorybaord上にパーツを配置していた例がありますが、これが後者の「Interface Builderを利用する方法」にあります。 +UIViewの初期化は、「コード上で行う方法」と storyboard や xib のように 「Interface Builderを利用する方法」とがあります。 +今までの章でstoryboard上にパーツを配置していた例がありますが、これが後者の「Interface Builderを利用する方法」にあります。 ここでは、コード上からUIViewを利用する方法を解説します。 diff --git a/Swift/pages/day2/2-3_UIView-Animation.md b/Swift/pages/day2/2-3_UIView-Animation.md index 654971ae..2e57f23a 100644 --- a/Swift/pages/day2/2-3_UIView-Animation.md +++ b/Swift/pages/day2/2-3_UIView-Animation.md @@ -12,7 +12,7 @@ UIView クラスのアニメーションメソッドを使うことで簡単に > transform | 中心点を基準にビューを拡大縮小、回転、または平行移動する場合は、 このプロパティを変更します。このプロパティを使用する変換は、常に2D空間で実行されます(3D変換を実行するには、Core Animationを使用 してビューのレイヤオブジェクトをアニメーション化する必要があります)。 > alpha | ビューの透明度を徐々に変更する場合は、このプロパティを変更します。 > backgroundColor | ビューの背景色を変更する場合は、このプロパティを変更します。 -contentStretch | 利用可能な空間一杯にビューのコンテンツを引き延ばす方法を変更する場合は、このプロパティを変更します。 +> contentStretch | 利用可能な空間一杯にビューのコンテンツを引き延ばす方法を変更する場合は、このプロパティを変更します。 > > [iOS Viewプログラミングガイド](https://developer.apple.com/jp/devcenter/ios/library/documentation/ViewPG_iPhoneOS.pdf)より引用 diff --git a/Swift/pages/day2/3-1_UITableView.md b/Swift/pages/day2/3-1_UITableView.md index 07992a1f..251bb243 100644 --- a/Swift/pages/day2/3-1_UITableView.md +++ b/Swift/pages/day2/3-1_UITableView.md @@ -33,7 +33,7 @@ Appleのドキュメントによると、以下のような目的で利用する - datasourceとdelegateの二つのプロトコルを持つ - datasource : 各行やセクションに埋めるデータを供給する役割を持つ - - deleagte : viewの外観やセルが選択された時にとるアクションを定義する + - delegate : viewの外観やセルが選択された時にとるアクションを定義する - 各行はセルを用いて描画を行う - 各行ごとに選択された時に何かしら動作を行う diff --git a/Swift/pages/day2/3-3_UITableViewCell-customization.md b/Swift/pages/day2/3-3_UITableViewCell-customization.md index 4b14ecb1..606dabe3 100644 --- a/Swift/pages/day2/3-3_UITableViewCell-customization.md +++ b/Swift/pages/day2/3-3_UITableViewCell-customization.md @@ -24,7 +24,7 @@ UITableViewCellには、デフォルトでいくつかのオプションがあ - セルの高さに合わせてcellの高さを変える この手順に沿って、実装を進めて行きます。 -プロジェクトファイルは4.2のものから引き続きで問題ありません。 +プロジェクトファイルは3.2のものから引き続きで問題ありません。 (注:TableViewのスタイルはPlainにしておいてください) 今回は以下の画像を使うので、サンプルプロジェクトに追加してください @@ -35,11 +35,11 @@ UITableViewCellには、デフォルトでいくつかのオプションがあ ![吹き出し左](./images/3_3/balloon1.png) ![吹き出し右](./images/3_3/balloon2.png) -###カスタムセルのxibの追加 +### カスタムセルのxibの追加 - XcodeのNewFileから Cocoa Touch Class を選択し、UITableViewCellのサブクラスとしてクラスを作成します。 クラス名は、CustomCellとしました。 -- 次に同じ名前のxibファイルを作ります。NewFileからUserInterface → Empty を選んで、セルのクラス名と同じ名前で保存してください。(サンプルではTVSCustomCellです) +- 次に同じ名前のxibファイルを作ります。NewFileからUserInterface → Empty を選んで、セルのクラス名と同じ名前で保存してください。(サンプルではCustomCellです) この辺りは、前回のviewをxibから作る、とほぼ同じです。 - Interface builder から TableViewCell をドラッグアンドドロップしてCellを作り、以下のようにカスタマイズしてください。 1. 高さを125pxくらいにする diff --git a/Swift/pages/day2/3-4_UITableView-other-options.md b/Swift/pages/day2/3-4_UITableView-other-options.md index 003fb04c..bfdde245 100644 --- a/Swift/pages/day2/3-4_UITableView-other-options.md +++ b/Swift/pages/day2/3-4_UITableView-other-options.md @@ -145,7 +145,7 @@ UIRefreshControlとは、引っぱり更新やPullToRefreshと呼ばれるアク ### 実際に使ってみる -###### 1. UIRefershControlはUITableViewControllerのプロパティとして利用できるので、UITableViewControllerのサブクラスを一つ作ります。 +###### 1. UIRefreshControlはUITableViewControllerのプロパティとして利用できるので、UITableViewControllerのサブクラスを一つ作ります。 - storyboard上のUITableViewControllerとTableViewControllerを紐付けてください - .swiftファイルのなかで、セクションの数と行の数を適宜修正してください diff --git a/Swift/pages/day2/3-5_Dynamic-height-with-a-custom-UITableViewCell.md b/Swift/pages/day2/3-5_Dynamic-height-with-a-custom-UITableViewCell.md index 0b5cd18b..eda7bc39 100644 --- a/Swift/pages/day2/3-5_Dynamic-height-with-a-custom-UITableViewCell.md +++ b/Swift/pages/day2/3-5_Dynamic-height-with-a-custom-UITableViewCell.md @@ -10,7 +10,7 @@ ## plist からデータの読み込み -plist は apple が用いているデータの定義で、XML で記述されているファイルです。 +plist は Apple が用いているデータの定義で、XML で記述されているファイルです。 ![plist](./images/3_5/image2.png) diff --git a/Swift/pages/day2/HomeWork-UIScrollView.md b/Swift/pages/day2/HomeWork-UIScrollView.md index 34274eed..6d042ab3 100644 --- a/Swift/pages/day2/HomeWork-UIScrollView.md +++ b/Swift/pages/day2/HomeWork-UIScrollView.md @@ -43,7 +43,7 @@ scrollView.addSubview(imageView) # 実際に動かしてみる 上の例を実装することで、scrollViewの動作を確認してみましょう。 -リポジトリのHomewor/3.1k以下にある scrollViewSample を開くか、Xcodeから新しいプロジェクトをテンプレートをSingle View Applicationで開き、こちらの画像をプロジェクトに追加してください。 +リポジトリのSwift/before/day2/homework以下にある ScrollViewSample を開くか、Xcodeから新しいプロジェクトをテンプレートをSingle View Applicationで開き、こちらの画像をプロジェクトに追加してください。 画像のURL → [https://raw.github.com/mixi-inc/iOSTraining/master/HomeWorks/3.1/scrollViewSample/scrollViewSample/big_image.jpg](https://raw.github.com/mixi-inc/iOSTraining/master/HomeWorks/3.1/scrollViewSample/scrollViewSample/big_image.jpg) @@ -69,6 +69,7 @@ view.addSubview(scrollView) let scale = UIScreen.main.scale let size = CGSize(width: image.size.width * scale, height: image.size.height * scale) let imageView = UIImageView(frame:CGRect(origin: .zero, size: size)) + imageView.image = image ``` - 画像の大きさ(800,600)と同じ大きさのimageViewを作っています diff --git a/Swift/pages/day3/1-1_Closure.md b/Swift/pages/day3/1-1_Closure.md index 67fd6527..a2cb59f5 100644 --- a/Swift/pages/day3/1-1_Closure.md +++ b/Swift/pages/day3/1-1_Closure.md @@ -68,7 +68,7 @@ c = { (a: Int) -> Void in print(a) } -c(10) // bに代入されたblockを実行 +c(10) // cに代入されたblockを実行 let c1: (Int, Int) -> Bool // 戻り値がBool型で引数として二つのInt型を取るClosure型変数c1の宣言 diff --git a/Swift/pages/day3/2-1_UIImagePickerController.md b/Swift/pages/day3/2-1_UIImagePickerController.md index c10e6511..c6068c95 100644 --- a/Swift/pages/day3/2-1_UIImagePickerController.md +++ b/Swift/pages/day3/2-1_UIImagePickerController.md @@ -8,7 +8,7 @@ ### プログラミングガイド -[カメラ操作のプログラ ミング(iOS用)につ いて](https://developer.apple.com/jp/devcenter/ios/library/documentation/CameraAndPhotoLib_TopicsForIOS.pdf) +[カメラ操作のプログラミング(iOS用)について](https://developer.apple.com/jp/devcenter/ios/library/documentation/CameraAndPhotoLib_TopicsForIOS.pdf) UIImagePickerController を使って iPhone の中にあるメディアを参照してみましょう。 diff --git a/Swift/pages/day3/3-2_FileManager.md b/Swift/pages/day3/3-2_FileManager.md index 2b07db2a..10ffa7a4 100644 --- a/Swift/pages/day3/3-2_FileManager.md +++ b/Swift/pages/day3/3-2_FileManager.md @@ -2,7 +2,7 @@ [File System Programming Guide](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010672) -[ファイルシステムプロ グラミングガイド](https://developer.apple.com/jp/devcenter/ios/library/documentation/FileSystemProgrammingGuide.pdf) +[ファイルシステムプログラミングガイド](https://developer.apple.com/jp/devcenter/ios/library/documentation/FileSystemProgrammingGuide.pdf) [NSFileManager Class Reference](https://developer.apple.com/reference/foundation/nsfilemanager) @@ -10,13 +10,13 @@ > ![filesystem_in_iOS](https://raw.github.com/mixi-inc/iOSTraining/master/Doc/Images/7.2/filesystem_in_iOS.png) -> [ファイルシステムプロ グラミングガイド](https://developer.apple.com/jp/devcenter/ios/library/documentation/FileSystemProgrammingGuide.pdf) から引用 +> [ファイルシステムプログラミングガイド](https://developer.apple.com/jp/devcenter/ios/library/documentation/FileSystemProgrammingGuide.pdf) から引用 | path | 説明 | |-----|----| | /Documents/ | ユーザが作り出したデータをファイルとして保存したい場合ここに保存してください。iTunes によってバックアップされます。 | | /Library/Caches| システムが再度取得可能なデータをキャッシュしておきたい場合はここに保存してください。iTunes によってバックアップされません。| -| /tmp/ | 一時的に保存しておきたいデータがればここに保存してください。必要がなくなった際にはその都度削除するようにしてください。iTunes にはバックアップされません。| +| /tmp/ | 一時的に保存しておきたいデータがあればここに保存してください。必要がなくなった際にはその都度削除するようにしてください。iTunes にはバックアップされません。| ## Document ディレクトリパス取得 @@ -31,7 +31,7 @@ console log Optional(file:///Users/Username/Library/Developer/CoreSimulator/Devices/CE1017AE-5E14-488C-B0B3-B364453B0413/data/Containers/Data/Application/F47D5EB7-5271-4528-85D6-A7E85B9D13B8/Documents/) ``` -URL ベースのパスが取得できます。シュミレータだと Mac のファイルシステムパスが表示されます。 +URL ベースのパスが取得できます。シミュレータだと Mac のファイルシステムパスが表示されます。 この URL に保存したいファイル名を追加して新たな URL を生成すれば保存が可能です。 diff --git a/Swift/pages/day3/4-1_JSON.md b/Swift/pages/day3/4-1_JSON.md index be2db46a..742dfe17 100644 --- a/Swift/pages/day3/4-1_JSON.md +++ b/Swift/pages/day3/4-1_JSON.md @@ -87,7 +87,7 @@ JSONオブジェクトからDataへの変換には class func data(withJSONObject obj: Any, options opt: JSONSerialization.WritingOptions = []) throws -> Data ``` -を用います。基本的な使い方は上記の逆となります。JSONのトップレベルオブジェクトを引数として渡します。同時にオプションとエラーへのポインタを渡します。変換に成功したらUTF-8でエンコードされた文字列のDataが返されます。エラーがあったときはerrorにその内容が含まれます。 +を用います。基本的な使い方は上記の逆となります。JSONのトップレベルオブジェクトとオプションを引数として渡します。変換に成功したらUTF-8でエンコードされた文字列のDataが返されます。エラーがあったときはcatchしたerrorにその内容が含まれます。 上記データを逆にDataに変換したサンプルは以下のようになります。 diff --git a/Swift/pages/day3/4-2_HTTP-request-basic.md b/Swift/pages/day3/4-2_HTTP-request-basic.md index 6264ad1b..ccd993bb 100644 --- a/Swift/pages/day3/4-2_HTTP-request-basic.md +++ b/Swift/pages/day3/4-2_HTTP-request-basic.md @@ -213,7 +213,7 @@ User取得API [https://qiita.com/api/v2/users/:user_name](https://qiita.com/api/ - ユーザー名を入れたらUserのレスポンスが返ってくるリクエストを実行してください - 完成したら、エラーが返却された時の処理を追加してください - - 赤文字でエラーの理由などを記述してください + - 赤文字でエラーの理由などを記述してください - 余裕があればUser Objectを作成し、パースしてください。 diff --git a/Swift/pages/day4/1-2_CocoaPods.md b/Swift/pages/day4/1-2_CocoaPods.md index 4fe2c6f7..620e25c6 100644 --- a/Swift/pages/day4/1-2_CocoaPods.md +++ b/Swift/pages/day4/1-2_CocoaPods.md @@ -12,8 +12,8 @@ CocoaPodsの公式サイトは下記になります。詳細はこちらをご #### インストール - RubyのGemを用いてインストールします。 - - RubyはおそらくCommandLineToolsを入れた時に入っていると思います - - Gemもおそらく10.8以降なら入っていると思います + - RubyはおそらくCommandLineToolsを入れた時に入っていると思います + - Gemもおそらく10.8以降なら入っていると思います コマンドラインツールで以下を実行します ``` @@ -179,7 +179,7 @@ pod 'SwiftyJSON' 例えば、サーバーから取得したJsonをパースして使おうとしたときに ```swift -if let JSONObject = try JSONSerialization.jsonObject(with: data,, options: .allowFragments) as? [[String: AnyObject]], +if let JSONObject = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: AnyObject]], let username = (JSONObject[0]["user"] as? [String: AnyObject])?["name"] as? String { // There's our username } diff --git a/Swift/pages/day4/2-1_class-design-1.md b/Swift/pages/day4/2-1_class-design-1.md index 38e8f19d..c5c216f1 100644 --- a/Swift/pages/day4/2-1_class-design-1.md +++ b/Swift/pages/day4/2-1_class-design-1.md @@ -7,17 +7,17 @@ iOS アプリケーション開発は MVC フレームワークを採用しています。最近ではMVVMだったり、Fluxだったりと様々な設計方法がありますが、まずはiOSアプリ設計の基本としてMVCをやっていきます。 - Model - - View を構成する情報を保持 - - 必要に応じて、APIClient でリモートから情報を取得したり、DB にアクセスして情報を取得する + - View を構成する情報を保持 + - 必要に応じて、APIClient でリモートから情報を取得したり、DB にアクセスして情報を取得する - View - - Model のデータを表示 - - ユーザから操作を受ける + - Model のデータを表示 + - ユーザから操作を受ける - Controller - - Model と View を結びつけるもの - - Model に更新メッセージを送り、Model からその完了通知を受ける - - View に Model の情報を送り、View を通じてユーザからの操作を受ける + - Model と View を結びつけるもの + - Model に更新メッセージを送り、Model からその完了通知を受ける + - View に Model の情報を送り、View を通じてユーザからの操作を受ける > ![MVC](https://raw.github.com/mixi-inc/iOSTraining/master/Doc/Images/9.1/MVC.png) > [Objective-Cプログラミングの概念](https://developer.apple.com/jp/devcenter/ios/library/documentation/CocoaEncyclopedia.pdf) から引用 @@ -126,8 +126,8 @@ struct GithubUser: GithubModel { init?(dict: [AnyHashable : Any]) { guard - let rawAvatorUrl = dict["avatar_url"] as? String, - let avatarUrl = URL(string: rawAvatorUrl), + let rawAvatarUrl = dict["avatar_url"] as? String, + let avatarUrl = URL(string: rawAvatarUrl), let login = dict["login"] as? String else { return nil } @@ -174,7 +174,7 @@ extension Date { case unknown case sunday case monday - case tuseday + case tuesday case wednesday case thursday case friday @@ -215,7 +215,7 @@ TransitionHandler.swift ```swift class TransitionHandler { - class func pushSecoundViewController(with viewController: UIViewController) { + class func pushSecondViewController(with viewController: UIViewController) { let vc = UIViewController() viewController.navigationController?.pushViewController(vc, animated: true) } @@ -224,7 +224,7 @@ class TransitionHandler { //do something } - class func presentScountViewController(with viewController: UIViewController) { + class func presentSecondViewController(with viewController: UIViewController) { //do something } diff --git a/Swift/pages/day4/2-2_class-design-2.md b/Swift/pages/day4/2-2_class-design-2.md index 9b9150b8..e9582a81 100644 --- a/Swift/pages/day4/2-2_class-design-2.md +++ b/Swift/pages/day4/2-2_class-design-2.md @@ -2,7 +2,7 @@ 引き続きクラス設計について説明します。 -## iOS開発におけるViweまわりでの抽象クラス +## iOS開発におけるViewまわりでの抽象クラス day4 2.1 で例として挙げた仕様がありました。 @@ -131,7 +131,7 @@ extension ViewController: DailyChoiceViewDelegate { ![MixiDailyChoiceView](./images/2_2/image4.png) ## Singleton インスタンス -アプリケーション内で一つだけインスタンスを存在させたい場合、Singlton パターンを使って実装します。Cocoa API では `UserDefaults.standard` `NotificationCenter.default` などで実現されています。その実装方法は以下のようになります。 +アプリケーション内で一つだけインスタンスを存在させたい場合、Singleton パターンを使って実装します。Cocoa API では `UserDefaults.standard` `NotificationCenter.default` などで実現されています。その実装方法は以下のようになります。 SharedObject.swift