未経験からのiPhoneアプリ開発blog

iPhoneアプリ開発の独学をしています。学習した内容をメモ的に記録していきます。

アプリ開発『WeightControl』vol.27

かなりブログ更新が滞っていますが、ブログが滞っているということは、アプリ開発がなかなか思うように進んでいなかったということです。

データベースを活用して日々の体重を管理していこうということでCore Dataの活用を考えていたのですが、Core Dataかなり難しく、ちょっと今のレベルでは扱えなさそうという判断をしました。ブログが滞っている間、ググったり書店に通ったりしていたのですが、基本的にCore DataはMaster-Detail Applicationで使用するのがスタンダードのようで、ただでさえ初心者には難しいと言われるCore Dataを中級者にもなりきれていないレベルの自分がいきなりTabbed Applicationに応用するというのはちょっとハードルが高すぎたようです。

ということで、今回はNSUserDefaultsを活用して体重管理をしていきたいと思います。データ保存の手段はいくつかありますが、NSUserDefaultsを使うとちょっと読み込みに時間がかかるようなのですが、今回のアプリで描画するグラフは過去30日間分と限定する予定のため、データ量は多くない(←まだ予測の範囲ですが)ということで何とかNSUserDefaultsで乗り切ろうと思います。NSUserDefaultsなら簡単なので初心者にも扱いやすいかと。

いろいろ調べているうちに、やっぱり自分のレベルはまだまだだなっていう実感があったので、iOS7対応の書籍でまた勉強した方がいいかなとも思ったのですが、やっぱりここまで来たらひとつくらいアプリを完成させてから次に進みたいという思いもあるので、頑張って今回のアプリは完成させたいと思っています!

当初は11月に完成させる予定で、今既に年末になっていますが、1月中には完成させる方向で頑張っていきたいと思います!

壁にぶち当たっています!

日々の体重データや日付などをデータベースで管理するためにCore Dataを使いたいのですが、なかなか難しくて、つまづいています!

ここ数日は毎日いろいろなサイトやサンプルコードを見たり、書籍等で研究をしているのですが、少しずつCore Dataの雰囲気がわかってきたようなわからないような。。。(いや、全然わかってないとは思いますが。。。)

亀のように、すごーくゆっくり理解が進んでいるので、もう少ししたら最低限このアプリで使うくらいの範囲でCore Dataが使えるようになるんじゃないかなと思っています。

 

さて、そんな気分転換に、Xcodeのエディターで使われるフォントの種類を変更してみました!

Xcode → Preferences → Fonts & Colorsですね。

こちらのサイトを参考にして、「ヒラギノ丸ゴ」にしてみました!

アプリ開発『WeightControl』vol.26

 グラフ作成のためのデータを日付別で保存して、取り出すための手段として、Core Dataというフレームワークを使えばいいことがググっていてわかりました。データの管理においては最もポピュラーな選択肢のひとつのようです。結構最初は難しくて挫折する人も多いようですが。。。

ただ、Core Dataを使うにあたり、大体のチュートリアルではプロジェクトの作成時にMaster-Detail Applicationのテンプレートを選択して「Use Core Data」のオプションを選択しましょうって書いてるけど、Tab Bar Applicationの場合、プロジェクトを作る時に「Use Core Data」が選択できません。むしろ、選択肢自体が出てきません。。。

Core Dataを使うってことでも結構壁だったのに、ここでも壁にぶち当たってます。Tab Bar ApplicationでもCore Dataを使うことはできるっていう情報はネットでもあるのですが、じゃあどうやってやるのかっていう情報まではないのです。

ここ数日、暇を見てはネットや本屋で調べていたのですが、結局自分でXcodeをいじりながら、下記手順でTab Bar Applicationでも普通にCore Dataが使えるんじゃないのかっていうのを発見しました。

 

------------------------

Xcodeのプロジェクト名のフォルダを右クリック

→New File

iOSのCore Data

→Data Model

------------------------

 

なんだか、このあたりの情報はネットよりも書籍の方が意外と得られるんじゃないかという雰囲気があったので、もうちょっと調べに本屋を物色しに行ってみます。Core Dataを使いこなせるようになるということはiPhoneアプリ開発において今後かなり重要そうなので、わかりやすい書籍があったら一冊欲しいですね!

 

一応こんな記事もあったのですが、ちょっとこのへんいじるのは怖いので、避けようと思います。

アプリ開発『WeightControl』vol.25 Core-PlotのX軸を日付にする方法

 

Core-PlotのX軸を日付にする方法ですが、まず、下記のサイトを参考にカスタマイズしてみました。

Core-Plotをじっくり使ってみる(X軸を日付にする) - Debian GNU/Linux 3.1 on PowerMac G4

 

今回は30日前の日付から今日までの日付を(◯◯/◯◯)の形式でX軸に表示させたいのですが、上記サイトを踏まえると、準備として、下記のようなコードが必要でしたので、viewDidAppear内に書きました。

------------------------------

// X軸を日付にするための準備

NSDate *today = [NSDate date];

NSTimeInterval oneDay = 24.0f * 60.0f * 60.0f;

 

// 30日前の日付を求める

NSDateComponents *comps = [[NSDateComponents alloc]init];

NSCalendar *calendar = [NSCalendar currentCalendar];

comps.day = -30;

NSDate *dateBefore30 = [calendar dateByAddingComponents:comps toDate:today options:0];

 

// 日付を◯◯/◯◯の形式にして、30日前の日からグラフがスタートするように設定

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"MM/dd"];

CPTTimeFormatter *timeFormatter = [[CPTTimeFormatter alloc] initWithDateFormatter:dateFormatter];

timeFormatter.referenceDate = dateBefore30;

------------------------------

 

timeFormatter.referenceDateに入れた日付がグラフのX軸のスタート日になるので、ここを30日前の日付にしておくのがミソです。

 

さて、これで、X軸とY軸のラベルのカスタマイズが終わったので、後は、実際に過去30日間の体重データをどのように保存して、このグラフに反映させるのかについてやっていきます。今プロットしているデータはランダムに生成した値なので。

 

f:id:tsutomu822:20131129170507p:plain

Xcodeのエラー"This device is no longer connected"

実機に接続した際に、"This device is no longer connected". というエラーが出てきて、デバイスを選択するところも普段は「◯◯◯のiPhone」と表示されるところが、"iOS Device"になる事象が発生しました。また、そのまま実機でビルドすると、下記エラーが出てきました。

 

------------------------------

No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination

------------------------------

 

これは、Macと実機を接続した時のコードが純正ではない(または、接続が悪い)場合に起きるエラーのようです。実際、自分のコードもエラーが出た時はApple純正でも接続がかなり悪くなっていたもので繋いでいました。

この場合、Xcodeのウィンドウ左上のメニュー"Xcode > Quit Xcode"で閉じて、改めて接続のいい純正コードを繋げてXcodeを開くと問題が解消されました!

 

参考URL:

iphone - Xcode: This device is no longer connected error - Stack Overflow