アプリ開発録

iPhoneアプリやその他開発で得られた知見をメモ

『インターバルリマインダー』 開発録#2

進捗

文字列のパースを済ませた

ペンを持ってる
I have a pen.
おまえだれだ
Who are you?

のようにひとつのTextViewに対して、一行ずつ和文と英文を交互に書いていって、それを2つ1セットとして処理して通知登録をするという処理。

// テキストのパース処理
    func parseText() -> [(jp:String, en:String)] {
        let text = remindTextField.text
        
        // 一行ずつ処理して、配列にセットにして処理する
        var lineIndex = 1
        var arr:[(jp:String, en:String)] = []
        var tmp = (jp:"", en:"")
        text?.enumerateLines{ (line, stop) -> () in
            if (lineIndex%2 != 0) {
                // 奇数の時(和文列の時)
                tmp.jp = line
            } else {
                // 偶数の時(英文列の時)、タプルを配列に追加
                tmp.en = line
                arr.append(tmp)
            }
            lineIndex += 1
        }
        // 和文と英文をセットにした配列を返す
        print(arr)
        return arr
    }

通知の発行

trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeinterval , repeats: true)

のようにリピート設定にした一定間隔での通知処理をしたのだが、通知を登録した時点で一発目が発火されてしまって意図した動作にならない。

60秒間隔通知の設定であれば、登録後の60秒後に1発目の発火が来てほしいのだが、登録した瞬間に通知が来てしまう。

調べても原因がわからず、同じような現象にハマっている人がいたがバグのような事を言われているが詳細不明。

stackoverflow.com

これは実機でならなかったらOKにするが、実機でも同様の現象が起きたら解決すべき課題となる。

挑戦しようとしたが諦めたこと

和文と英文を交互に同一のテキスト上に配置するという、ややプログラマ向けの仕様のため、TextViewの背景に、2行で英語と日本語のワンセットという意図が伝わる背景画像(スクロールしてもテキストと一緒にスクロールされる)を設置したかったのだが、情報不足のため今回は断念。