Provisioning Profilesの有効期限が切れたときの対処法
Provisioning Profilesの有効期限が3ヶ月おきに発生するので、一応メモ
ブラウザでiOS Provisioning Portalへアクセスし、Provisioning タブをクリック
↓
対象Provisioning ProfilesステータスがExpiredになっているので、ActionsのRenewボタンをクリック
↓
ブラウザをリロードして、ActionsのDownloadボタンをクリックし、Provisioning Profilesをダウンロード
↓
ダウンロードしたProvisioning Profilesをダブルクリック
↓
XCodeのウィンドウ→オーガナイザを開き、Provisioningの有効期限切れProfilesを削除
↓
XCodeのプロジェクト→プロジェクト設定を編集でビルドタブ選択
↓
コード署名IDで新しく取得したProvisioning Profilesを選択
↓
ビルド
でOK。
ブラウザでiOS Provisioning Portalへアクセスし、Provisioning タブをクリック
↓
対象Provisioning ProfilesステータスがExpiredになっているので、ActionsのRenewボタンをクリック
↓
ブラウザをリロードして、ActionsのDownloadボタンをクリックし、Provisioning Profilesをダウンロード
↓
ダウンロードしたProvisioning Profilesをダブルクリック
↓
XCodeのウィンドウ→オーガナイザを開き、Provisioningの有効期限切れProfilesを削除
↓
XCodeのプロジェクト→プロジェクト設定を編集でビルドタブ選択
↓
コード署名IDで新しく取得したProvisioning Profilesを選択
↓
ビルド
でOK。
Sqlite3を使ってみる
久々にiPhoneアプリ開発をすることに。
DBを必要とする為、前アプリで使用したCore Dataを使うことも考えたが、どうも使いづらい。
で、敬遠していた、もう一つのDB管理方法Sqliteを再度調べてみることにした。
調べていくうちに、FMDBというSQLiteラッパーが存在することを知り、調べてみるとめっちゃ簡単そう。
とりあえず、FMDBをダウンロード
1.解凍して、FMDBフォルダごと、プロジェクトへ追加(fmdb.mはサンプルなので追加しなくてOK)
2.既存のフレームワーク(libsqlite3.0.dylib)を追加する
3.ターミナルでDB、テーブルを生成し、生成したDBごと、書類ディレクトリへ追加し、さらにプロジェクトへ追加する。(SQLiteの使い方は割愛)
4.データベースオープンするコードを書いて、クエリーを流してみる。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"mydatabase.sqlite"];
FMDatabase* db= [FMDatabase databaseWithPath:writableDBPath];
NSLog(@"データベース : 開いてみまっか %@",writableDBPath);
if ([db open]) {
NSLog(@"データベース開けたよ");
[db setShouldCacheStatements:YES];
// SELECT
FMResultSet *rs = [db executeQuery:@"SELECT * FROM test_table"];
while ([rs next]) {
NSLog(@"データベースの内容みてみまっか %d %@ %d ", [rs intForColumn:@"id"], [rs stringForColumn:@"data"]);
}
[rs close];
[db close];
}else{
NSLog(@"データベース開けなかったよ");
}
こんなに楽になるなんて、FMDBってすごい!
DBを必要とする為、前アプリで使用したCore Dataを使うことも考えたが、どうも使いづらい。
で、敬遠していた、もう一つのDB管理方法Sqliteを再度調べてみることにした。
調べていくうちに、FMDBというSQLiteラッパーが存在することを知り、調べてみるとめっちゃ簡単そう。
とりあえず、FMDBをダウンロード
1.解凍して、FMDBフォルダごと、プロジェクトへ追加(fmdb.mはサンプルなので追加しなくてOK)
2.既存のフレームワーク(libsqlite3.0.dylib)を追加する
3.ターミナルでDB、テーブルを生成し、生成したDBごと、書類ディレクトリへ追加し、さらにプロジェクトへ追加する。(SQLiteの使い方は割愛)
4.データベースオープンするコードを書いて、クエリーを流してみる。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"mydatabase.sqlite"];
FMDatabase* db= [FMDatabase databaseWithPath:writableDBPath];
NSLog(@"データベース : 開いてみまっか %@",writableDBPath);
if ([db open]) {
NSLog(@"データベース開けたよ");
[db setShouldCacheStatements:YES];
// SELECT
FMResultSet *rs = [db executeQuery:@"SELECT * FROM test_table"];
while ([rs next]) {
NSLog(@"データベースの内容みてみまっか %d %@ %d ", [rs intForColumn:@"id"], [rs stringForColumn:@"data"]);
}
[rs close];
[db close];
}else{
NSLog(@"データベース開けなかったよ");
}
こんなに楽になるなんて、FMDBってすごい!
Application Loaderのエラー
遂にiPhoneアプリを申請し、待つこと1週間半。
[For Review] -> [Reject] にステータスが変わりました...
メールをみてみると、どうやらローカライズに不備があり、リジェクトされていたようです。
早速、指摘箇所修正を試みるが根が深い...
苦節1週間...
さぁ、いざ再申請!と思い、Distributionでビルド!
ビルド後のアプリを圧縮して、Itunes Connectへ。
あれ?
アップロードってどこからするんだっけ???
と考えること15分、そうでした、[Application Loader.app]なんてものを使ってアップロードしたことを思い出しましたw (どっかに書いてくれてればいいのに...)
と思ったのもつかの間、次のエラーで進めない?!
Application failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate. (-19011)
証明がおかしくね?的なことを言われるが、間違いが見つからない。。。
色々調べてみるが、あっているように見える。
と、悩みながら、ターゲットの設定を見直していると、Any iOS Deviceが iPhone Developer: xxx となっていた。
これか...
早速、iPhone Distribution: xxx に変更して、再びアップロードした。
結果はあっさりOKでした。
Provisioning Profileの名前は、DistributionとDeveloperで変えとく方が無難だと今頃気づきましたw
In Reviewの結果をまたしばらく待つことにします。
[For Review] -> [Reject] にステータスが変わりました...
メールをみてみると、どうやらローカライズに不備があり、リジェクトされていたようです。
早速、指摘箇所修正を試みるが根が深い...
苦節1週間...
さぁ、いざ再申請!と思い、Distributionでビルド!
ビルド後のアプリを圧縮して、Itunes Connectへ。
あれ?
アップロードってどこからするんだっけ???
と考えること15分、そうでした、[Application Loader.app]なんてものを使ってアップロードしたことを思い出しましたw (どっかに書いてくれてればいいのに...)
と思ったのもつかの間、次のエラーで進めない?!
Application failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate. (-19011)
証明がおかしくね?的なことを言われるが、間違いが見つからない。。。
色々調べてみるが、あっているように見える。
と、悩みながら、ターゲットの設定を見直していると、Any iOS Deviceが iPhone Developer: xxx となっていた。
これか...
早速、iPhone Distribution: xxx に変更して、再びアップロードした。
結果はあっさりOKでした。
Provisioning Profileの名前は、DistributionとDeveloperで変えとく方が無難だと今頃気づきましたw
In Reviewの結果をまたしばらく待つことにします。
iPhoneでCore-Plotを使ってグラフを書いてみる
iPhoneでCore-Plotを使うための導入手段
付属のReadMe通り実行してもうまくいかず、参考文献もなく、英文読みあさる苦労をしてしまいました。
同じように苦戦している人いるかも知れないので情報共有してみます。
まず最初に、Core-Plotのソースコードを下記からダウンロード
http://code.google.com/p/core-plot/
解凍して、適当な場所へ保存(後で指定するのでどこでもいいです。)
自分は以下($HOME/Library/)にSDKsディレクトリを作ってそこに置いてみた。
$HOME/Library/SDKs/CorePlotSDK/
→README.txt
→core-plot
→iphoneos.sdk
→iphonesimulator.sdk
Mercurialをインストールし、[hg]コマンドを利用できるようにする
http://mercurial.selenic.com/downloads/
コマンドプロンプトを開き、
mv $HOME/Library/SDKs/CorePlotSDK/
hg clone http://core-plot.googlecode.com/hg/ core-plot
XCodeでプロジェクトを開きビルドする(Command+B)
/Library/SDKs/CorePlotSDK/core-plot/framework/CorePlot-CocoaTouch.xcodeproj
XCodeで新規プロジェクトをView-Basedで作る(まぁView-Basedじゃなくてもいいですがw)
/Library/SDKs/CorePlotSDK/core-plot/framework/CorePlot-CocoaTouch.xcodeproj
をドラッグし、デスティネーショングループのフォルダに項目をコピーするのチェックが外れていることを確認し、追加ボタンを押す
追加されたCorePlot-CocoaTouch.xcodeprojの▼を押し、libCorePlot-CocoaTouch.aを[ターゲット]→[バイナリをライブラリにリンク]へドラッグする
メニューバーの[プロジェクト]→[アクティブターゲットを編集]を選択(Opt+Command+E)し、一般タブを選ぶ。
直接依存関係の+ボタンをクリックし、CorePlot-CocoaTouchをターゲットとして追加する
同ターゲット情報画面のビルドタブをクリックする。
(検索パス)→(ヘッダ検索パス) をダブルクリックし、
$HOME/Library/SDKs/CorePlotSDK/core-plot/framework 再帰的にチェック(これ重要)
(リンク)→(他のリンカフラグ)
-ObjC -all_load
Core-PlotはQuartzCireを使っているようなので追加
グループとファイルのFrameworksフォルダを選択し、右クリックして、[追加]→[既存のフレームワーク]を選び、QuartzCire.frameworkを追加する
これで無事Core-Plotのインストールが完了したかと思います!
試しにグラフを表示してみた。

うーん、今回はちょっとしんどかった...
付属のReadMe通り実行してもうまくいかず、参考文献もなく、英文読みあさる苦労をしてしまいました。
同じように苦戦している人いるかも知れないので情報共有してみます。
まず最初に、Core-Plotのソースコードを下記からダウンロード
http://code.google.com/p/core-plot/
解凍して、適当な場所へ保存(後で指定するのでどこでもいいです。)
自分は以下($HOME/Library/)にSDKsディレクトリを作ってそこに置いてみた。
$HOME/Library/SDKs/CorePlotSDK/
→README.txt
→core-plot
→iphoneos.sdk
→iphonesimulator.sdk
Mercurialをインストールし、[hg]コマンドを利用できるようにする
http://mercurial.selenic.com/downloads/
コマンドプロンプトを開き、
mv $HOME/Library/SDKs/CorePlotSDK/
hg clone http://core-plot.googlecode.com/hg/ core-plot
XCodeでプロジェクトを開きビルドする(Command+B)
/Library/SDKs/CorePlotSDK/core-plot/framework/CorePlot-CocoaTouch.xcodeproj
XCodeで新規プロジェクトをView-Basedで作る(まぁView-Basedじゃなくてもいいですがw)
/Library/SDKs/CorePlotSDK/core-plot/framework/CorePlot-CocoaTouch.xcodeproj
をドラッグし、デスティネーショングループのフォルダに項目をコピーするのチェックが外れていることを確認し、追加ボタンを押す
追加されたCorePlot-CocoaTouch.xcodeprojの▼を押し、libCorePlot-CocoaTouch.aを[ターゲット]→[バイナリをライブラリにリンク]へドラッグする
メニューバーの[プロジェクト]→[アクティブターゲットを編集]を選択(Opt+Command+E)し、一般タブを選ぶ。
直接依存関係の+ボタンをクリックし、CorePlot-CocoaTouchをターゲットとして追加する
同ターゲット情報画面のビルドタブをクリックする。
(検索パス)→(ヘッダ検索パス) をダブルクリックし、
$HOME/Library/SDKs/CorePlotSDK/core-plot/framework 再帰的にチェック(これ重要)
(リンク)→(他のリンカフラグ)
-ObjC -all_load
Core-PlotはQuartzCireを使っているようなので追加
グループとファイルのFrameworksフォルダを選択し、右クリックして、[追加]→[既存のフレームワーク]を選び、QuartzCire.frameworkを追加する
これで無事Core-Plotのインストールが完了したかと思います!
試しにグラフを表示してみた。

うーん、今回はちょっとしんどかった...
フィルタリング(predicateWithFormat)を日付でしたい
predicateWithFormatのフィルタリングを日付でしたかったのだが、サンプルになく手間取った。。。
結論は、NSDate型のスタートとエンドを作ってあげて渡せばいいだけだった。
//NSDateComponentsのインスタンス生成
NSDateComponents *comp = [[NSDateComponents alloc] init];
//開始日時用NSDateComponentsに日付を設定
[comp setYear:2010];
[comp setMonth:8];
[comp setDay:7];
[comp setHour:00];
[comp setMinute:00];
[comp setSecond:00];
//開始日時用NSCalendarを使ってNSDateComponentsをNSDateに変換
NSDate* startDate = [[NSCalendar currentCalendar] dateFromComponents:comp];
//終了日時用NSDateComponentsに日付を設定
[comp setYear:2010];
[comp setMonth:8];
[comp setDay:7];
[comp setHour:23];
[comp setMinute:59];
[comp setSecond:59];
//終了日時用NSCalendarを使ってNSDateComponentsをNSDateに変換
NSDate* endDate = [[NSCalendar currentCalendar] dateFromComponents:comp];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(insertDate >= %@ ) and (insertDate < %@)",startDate,endDate];
[fetchRequest setPredicate: predicate ];
結構悩んだのにこんな結末w
結論は、NSDate型のスタートとエンドを作ってあげて渡せばいいだけだった。
//NSDateComponentsのインスタンス生成
NSDateComponents *comp = [[NSDateComponents alloc] init];
//開始日時用NSDateComponentsに日付を設定
[comp setYear:2010];
[comp setMonth:8];
[comp setDay:7];
[comp setHour:00];
[comp setMinute:00];
[comp setSecond:00];
//開始日時用NSCalendarを使ってNSDateComponentsをNSDateに変換
NSDate* startDate = [[NSCalendar currentCalendar] dateFromComponents:comp];
//終了日時用NSDateComponentsに日付を設定
[comp setYear:2010];
[comp setMonth:8];
[comp setDay:7];
[comp setHour:23];
[comp setMinute:59];
[comp setSecond:59];
//終了日時用NSCalendarを使ってNSDateComponentsをNSDateに変換
NSDate* endDate = [[NSCalendar currentCalendar] dateFromComponents:comp];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(insertDate >= %@ ) and (insertDate < %@)",startDate,endDate];
[fetchRequest setPredicate: predicate ];
結構悩んだのにこんな結末w





Copyright © iPhoneアプリ超基礎開発備忘録 All Rights Reserved.