Month: February 2017

Swift: exit(0)

アプリが自分で強制終了するより、ユーザに選択してもらうのが筋なのでしょうね。

macOSはアプリが消えて無くなるのは、マナー違反です。強制終了とQuitはユーザが決めます。

しかし、アプリ自ら消えて無くなりたいとき、exit(0)と書きたくなります。Single windowの場合、それでもいいケースがあるようですが、後々、どうしてexit(0)なんか使ったのだろうと考え込むことになります。

それで、applicationShouldTerminateあたりを直接呼び出せないか、考えるのですが、次が出てきません。それで、NSApplication.shared().terminate(self) に最後には行き着きます。

注記: Swift4 (Xcode9.0)では、NSApplication.shared.terminate(self)になるようです。

これで、出口はひとつになり、すっきりします。出口でファイルの保存などの後処理をしてから

func applicationShouldTerminate(_ sender:NSApplication) -> NSApplicationTerminateReply {
        ExecSaveArchive() //ファイルをsaveする。
        return  .terminateNow 
    }            

func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool
        ExecSaveArchive()//ファイルをsaveする。
        return false//trueを返すと、アプリがterminateする。
    }

Swift:NSMutableArrayの勘違い

あらら・・・と気がついた。しかし、気づくのが遅すぎ。

メータ検診するアプリのデバッグが終わりました。ドキュメントを作っています。いつものように英語から先に書いています。

今回、いくつか発見がありました。

  • もしかすると、[String]か[[String]]で済むのに、NSMutableArrayを使っていた可能性があります。[]で深くしていけば多次元の表現になると、今更ながら気づき、たいへん感動しています。
  • いまひとつ疑問なのは、abc[1][2]のような配列の表現がエラーにならなくなっています。どこかの時点でNSArrayをNSMutableArrayに変更したためその表現がエラーになったのかもしれませんが、どうだったのでしょう?
  • あともうひとつは、ビルドの時間。ライン数や使っている変数によるところがあるのかなあ?

 

Swift:ボタン

マンション内の水道メータを調べるアプリを必要に迫られて開発しはじめました。

だいぶ実装が進んできたのですが、入力をクリアするのに手間取りました。textfieldで定義していたからです。buttonでないとクリック後にカーソルをどこかに移動してクリックしないと、クリックしたとき自動的にクリアされません。

作っているうちに、専用アプリでなく、汎用アプリにできるとわかり、力が入ってきました。CSVファイルの読み書きが心配だったのですが、これは簡単にいきました。もっとも、現時点では、読み込みだけですが。

macOSアプリが完了したら、iOSアプリに着手します。3月末までに終わらせる必要があるので、期間的にはちょうどいいと思っています。

便利にMac:弥生クラウド

確定申告の季節になりました。

去年まではWindowsでやよいの青色申告を使い、そのあと国税庁のページで確定申告の処理をしていました。

今年はMacを使い、弥生クラウドで処理しました。全然こちらの方が便利で速いです。無料版は14ヶ月使えるので、来年の確定申告まではタダです。ベーシックプランが通常価格8,640円なのでお手頃です。

VMWareを導入することも考えたのですが、今更、Windowsを使いたくないという思いもあり、クラウド版にしました。この変更はうまく行きました。

しかし、NTTからJ:COMに切り替えた直後、メール送信ができなくなり、パニクりました。原因はHotspot Shieldのバージョンアップだったのですが、昨夜、ようやく先方サポートが開発にエスカレートすることを約束したので、やれやれです。今は、暫定的に古いバージョンを使っています。

トラブったとき、海外アプリはたいへんです。ほとんど全部のアプリが海外アプリで、日本語サポートは買うときくらいなので、一旦トラブルが出ると本当にお手上げです。米国人の一般的な性格なのか、なかなか自分の非を認めようとしません。

今月初め、ログインができない問題は1週間で解決しましたので、今回もそのくらいでできればラッキーです。

Swift:対象市場は欧米で79%

アプリの市場別売上高を調べました。

確定申告の時期になったので売上データを整理しました。

たいして売れていないのですが、対象市場は欧米で79%を占めました。日本は6%なので、欧米向けの商品開発をするというのは、メーカーに限らず、重要なことだと思います。

screenshot-2017-02-12-22-41-53

便利にMac:ブログのfavicon

WordPressのfaviconを設定しました。

以前はgravatarで設定するようになっていましたが、wordpressで設定できるようになりました。左下のサイトアイコンがそうです。アイコンはkeynoteとpreviewで作成すればいいです。

screenshot-2017-02-11-21-50-30

便利にMac:NTT西日本やめます

NTT西日本のフレッツ光からJ:CO Mに乗り換えました。

ルーターとPCの設定は、設置時、エンジニアの方にやっていただけます。注意点は次の通りでした。

親機

NTT西日本からJ:COMへの切替で唯一注意しないといけない点は、親機の設定をローカルルーター(DHCP有効)にしないといけないという点でした。

メール関係

子機側とPC/Mac・iPhoneなどの端末の設定は何も変更する必要はありません。
メールアドレスの取得とメーラーの設定は少しクセがありました。

screenshot-2017-02-08-20-20-49

Swift: MesaClip

こんな感じのアプリになりました。

やり残しがいくつかあります。

ひとつはパフォーマンスの改善。

あとはbookmarkの登録(追加)・変更・削除が簡単にできた方がいいのであとから検討します。編集機能までやると手が足りません。

wordpressにサムネールで表示する方法があったのですね。知りませんでした。