読者です 読者をやめる 読者になる 読者になる

Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #226】自作のクラスをSequenceTypeを適用して、for in 構文に対応させる

関数型プログラミング Swift Swift基本文法

for in構文は配列の繰り返し処理に使う。
このfor in構文を自作のクラスでも使えるようにするには?

SequenceTypeプロトコルを自作のクラスに適用する必要がある。

■SequenceTypeプロトコルの定義

protocol SequenceType : _Sequence_Type {

    typealias Generator : GeneratorType

    func generate() -> Generator
}

■GeneratorOfを使って簡単に実装する
SequenceTypeを適用するのはいろいろ実装しないといけないのですが、
GeneratorOfを使うことで簡単に実行できる。

・まずは、自作クラスを普通にfor inで繰り返す

import UIKit

struct Person {
    let name:String
    let like:String
}

// カスタムクラス
class CustomClass{
    let persons = [
        Person(name: "Aさん", like: "ガッキー"),
        Person(name: "Bさん", like: "のぞみん"),
        Person(name: "Cさん", like: "みさみさ"),
        Person(name: "Dさん", like: "ぶさぶさ"),
        Person(name: "Eさん", like: "さとみ"),
        Person(name: "Fさん", like: "かんな")
    ]
}

// 実行
let obj = CustomClass()

// CustomClassのインスタンスからpersonsプロパティにアクセスして繰り返し処理する
for person in obj.persons{
    println("\(person.name)\(person.like)が好き")
}

・SequenceTypeを適用して、繰り返し処理する

import UIKit

struct Person {
    let name:String
    let like:String
}

// カスタムクラス
class CustomClass{
    let persons = [
        Person(name: "Aさん", like: "ガッキー"),
        Person(name: "Bさん", like: "のぞみん"),
        Person(name: "Cさん", like: "みさみさ"),
        Person(name: "Dさん", like: "ぶさぶさ"),
        Person(name: "Eさん", like: "さとみ"),
        Person(name: "Fさん", like: "かんな")
    ]
}

// SequenceTypeを適用
extension CustomClass:SequenceType{
    func generate() -> GeneratorOf<Person> {
        var index = 0

        return GeneratorOf<Person>{
            if index < self.persons.count{
                return self.persons[index++]
            }else{
                return nil
            }
        }
    }
}

// 実行
let obj = CustomClass()

// CustomClassのインスタンスから繰り返し処理が実行できる
for person in obj{
    println("\(person.name)\(person.like)が好き")
}

■結果
f:id:fjswkun:20150706230618p:plain

【参考情報】
iOSアプリ開発未経験の人向け
iOSアプリ開発をはじめたとき最初に買った書籍
【アプリ作成未経験の人向け】
Storyboardを使って画面を作成していく。
手順にしたがって操作していくと、ボタンの作成やWebViewの作成などができる。
アプリって、こんな感じで作るんだというのを体験できる。

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾

③中級者、上級者向け

詳解 Swift

詳解 Swift