はまったので、備忘録的に書いておきます。
なんらかの理由で、以前のバージョンのcoredataのModel内容を確認、または復元したいとき。
ソース管理から、うまく以前のバージョンに戻せない場合、下記の方法で復元できます。
環境:
iOS 5.1.1
xcode4.4.1
0. xcodeでアプリ開発環境を開く
1. Organizer - Archiveを開く
2. Distributeした履歴がずらっと出てくるはずなので、対象のバージョンを選択する。
(日付等を手がかりに、AppStoreに登録したバージョンはStatusにSubmittedと出ている筈)
3. 選択後、再度Distributeを行い、Adhocを選択する。すると、xxx.ipaファイルを作成される。
4. xxx.ipaファイルはzipファイルなので、拡張子をzipにリネームし、解凍する。
5. 解凍すると、Payloadというフォルダが出てくるので、その下に[アプリ名称]のファイルがあるはず。
それを右クリック→パッケージの内容を表示する。
6. パッケージ内容は、アプリのバイナリや画像ファイル等が入っている。
その中に[xxxx.momd]というフォルダがあるはず。
7. [xxxx.momd]内部には、coredataのmodelのバージョンごとにxxxx.momファイルがあるので、対象のバージョンのmomファイルを任意のフォルダに解凍しておく。
8. xcodeに戻り、coredataのmodelを選択する。
editor -> importを選択する。
先ほど解凍したmomファイルを選択する。
9. すると、momファイルの内容から、テーブルが復元される。
このとき、既存のテーブルに追加される形になるので、復元元は空のmodelにしておくと解りやすい。
ドラムも発表会を3回経験し、一通り普通のことは出来る様になった気がするので
今月からvocalに変更しました。今日で2回目だったので、忘れない様にメモっておこう。
1回目で習ったこと
・声の出る仕組み、声帯が震えて共鳴して声に鳴る
・共鳴する箇所は3カ所、鼻を使えるとよくなる
・ピンポン球を口に含んだ感じで
・後色々あったけど忘れた。。
2回目
・リラックスが一番大事、家にいる感じで
・腹式呼吸の声は安定する
・4小節と1小節を交互に
・長い小節の前に息継ぎ
・リップトゥリルは声帯のマッサージになる
・ホッペタを持ち上げるとリップトゥリルがやりやすい
などなど
今月からvocalに変更しました。今日で2回目だったので、忘れない様にメモっておこう。
1回目で習ったこと
・声の出る仕組み、声帯が震えて共鳴して声に鳴る
・共鳴する箇所は3カ所、鼻を使えるとよくなる
・ピンポン球を口に含んだ感じで
・後色々あったけど忘れた。。
2回目
・リラックスが一番大事、家にいる感じで
・腹式呼吸の声は安定する
・4小節と1小節を交互に
・長い小節の前に息継ぎ
・リップトゥリルは声帯のマッサージになる
・ホッペタを持ち上げるとリップトゥリルがやりやすい
などなど
coredataをgroupbyして集計(合計/平均等)する方法のメモ
coredateに以下のようなテーブルがあるとします。
テーブル名:
- balance
column:
- inputdate(date)
- shopname(string)
- balancedata(int32)
上記テーブルをshopnameでサマリして合計を出したい場合、SQLだと下記でいけます。
select shopname, total(balancedata) from balance group by shopname;
同様のことをobjective-cで行う場合、下記のようになります。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"balance" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entityDescription];
// expression(select)
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"balancedata"];
NSExpression *expression =
[NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
// expresssion description
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"totalBalance"];
[expressionDescription setExpression:expression];
[expressionDescription setExpressionResultType:NSInteger32AttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObjects: expressionDescription, @"shopname", Nil]];
// group by
[request setPropertiesToGroupBy:[NSArray arrayWithObject:@"shopname"]];
[request setResultType:NSDictionaryResultType];
NSError *error = nil;
NSArray *fetchResult = [self.managedObjectContext executeFetchRequest:request error:&error];
//[request release];
if (error) {
return nil;
}
課題:
GroupByをカラム単位で行う場合はこれでいいですが、
GroupBy句に関数が絡む場合、エラーとなります。カラム名以外は受け付けてくれない。。
その他:
coredataの実行時のSQLを確認するには、
-com.apple.CoreData.SQLDebug 1
を実行時の引数に追加します。
参考:
http://cocoadays.blogspot.com/2010/07/core-data.html
http://d.hatena.ne.jp/watanata2000/20111115/1321356729
coredateに以下のようなテーブルがあるとします。
テーブル名:
- balance
column:
- inputdate(date)
- shopname(string)
- balancedata(int32)
上記テーブルをshopnameでサマリして合計を出したい場合、SQLだと下記でいけます。
select shopname, total(balancedata) from balance group by shopname;
同様のことをobjective-cで行う場合、下記のようになります。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"balance" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entityDescription];
// expression(select)
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"balancedata"];
NSExpression *expression =
[NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
// expresssion description
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"totalBalance"];
[expressionDescription setExpression:expression];
[expressionDescription setExpressionResultType:NSInteger32AttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObjects: expressionDescription, @"shopname", Nil]];
// group by
[request setPropertiesToGroupBy:[NSArray arrayWithObject:@"shopname"]];
[request setResultType:NSDictionaryResultType];
NSError *error = nil;
NSArray *fetchResult = [self.managedObjectContext executeFetchRequest:request error:&error];
//[request release];
if (error) {
return nil;
}
課題:
GroupByをカラム単位で行う場合はこれでいいですが、
GroupBy句に関数が絡む場合、エラーとなります。カラム名以外は受け付けてくれない。。
その他:
coredataの実行時のSQLを確認するには、
-com.apple.CoreData.SQLDebug 1
を実行時の引数に追加します。
参考:
http://cocoadays.blogspot.com/2010/07/core-data.html
http://d.hatena.ne.jp/watanata2000/20111115/1321356729
