(BOOL)resetDatastore
{
[[self managedObjectContext] lock];
[[self managedObjectContext] reset];
NSPersistentStore *store = [[[self persistentStoreCoordinator] persistentStores] lastObject];
BOOL resetOk = NO;
if (store)
{
NSURL *storeUrl = store.URL;
NSError *error;
if ([[self persistentStoreCoordinator] removePersistentStore:store error:&error])
{
[[self persistentStoreCoordinator] release];
__persistentStoreCoordinator = nil;
[[self managedObjectContext] release];
__managedObjectContext = nil;
if (![[NSFileManager defaultManager] removeItemAtPath:storeUrl.path error:&error])
{
NSLog(@"\nresetDatastore. Error removing file of persistent store: %@",
[error localizedDescription]);
resetOk = NO;
}
else
{
//now recreate persistent store
[self persistentStoreCoordinator];
[[self managedObjectContext] unlock];
resetOk = YES;
}
}
else
{
NSLog(@"\nresetDatastore. Error removing persistent store: %@",
[error localizedDescription]);
resetOk = NO;
}
return resetOk;
}
else
{
NSLog(@"\nresetDatastore. Could not find the persistent store");
return resetOk;
}
}
2012年10月29日月曜日
CoreDataのデータを全て削除
2012年10月28日日曜日
半透明のviewを重ねる
半透明のviewの上にviewを以下のように重ねると
子のviewのalphaも親のalphaに引きづられてしまい、子のviewのalphaを1.0に設定してもどちらも半透明になってしまう。
子のviewのalphaも親のalphaに引きづられてしまい、子のviewのalphaを1.0に設定してもどちらも半透明になってしまう。
UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100,100)];
view.alpha = 0.5;
[self.navigationController.view addSubview:view];
UIView* childView = [[UIView alloc] initWithFrame:CGRectMake(25, 25, 50,50)];
childView.backgroundColor = [UIColor whiteColor];
childView.alpha = 1.0;
これを解決するにはviewではなく、background colorのUIColorのalphaを変える必要がある。
UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100,100)];
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
[self.navigationController.view addSubview:view];
UIView* childView = [[UIView alloc] initWithFrame:CGRectMake(25, 25, 50,50)];
childView.backgroundColor = [UIColor whiteColor];
2012年8月20日月曜日
Objective-Cのシングルトンパターン
Objective-Cのシングルトンの実装ですが、
GCDにdispatch_onceという便利なのがあるので、これを利用するとすっきり書けますし、dispatch_onceだとXcodeによる補完が強力なので書くのも速いです。
http://stackoverflow.com/questions/7568935/how-do-i-implement-an-objective-c-singleton-that-is-compatible-with-arc
+ (MyClass *)sharedInstance
{
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}
GCDにdispatch_onceという便利なのがあるので、これを利用するとすっきり書けますし、dispatch_onceだとXcodeによる補完が強力なので書くのも速いです。
http://stackoverflow.com/questions/7568935/how-do-i-implement-an-objective-c-singleton-that-is-compatible-with-arc
+ (MyClass *)sharedInstance
{
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}
2012年8月6日月曜日
Xcode : TODO, FIXMEなどの記述
TODO, FIXMEなどのコメントを以下のようなフォーマットでつけると
control + 6 でのメソッド一覧の表示の際に#pragma markと同様に簡単に見つけられるようになります。(参考)
// TODO: "comment"
// FIXME: "comment"
// !!!: "comment"
// ???: "comment"
// MARK: "comment"
Xcode4.4以前はメソッドのなかに記載しても表示されませんでしたが、Xcode4.4以降だとメソッドの中に記載しても表示されるようになったのでTODOなどが使いやすくなりました。
control + 6 でのメソッド一覧の表示の際に#pragma markと同様に簡単に見つけられるようになります。(参考)
// TODO: "comment"
// FIXME: "comment"
// !!!: "comment"
// ???: "comment"
// MARK: "comment"
Xcode4.4以前はメソッドのなかに記載しても表示されませんでしたが、Xcode4.4以降だとメソッドの中に記載しても表示されるようになったのでTODOなどが使いやすくなりました。
2012年8月5日日曜日
Xcode : #pragma markで見出しをつける
プログラム上でたまに見かける #pragma mark *** の使い方です。(参考)
#pragma mark を使うことでコードをXcodeで見やすくすることができます。
C#知ってる人はC#のpragma regionと似たような感じに使うことができます。(begin-endはいらない)
・書き方
*** のところに何か文字列を記載します。
#pragma mark ***
例:hogeとつけてみる
"control + 6" でメソッド一覧を表示すると
図のようにpragma markでつけたhogeという文字列が一覧に表示されるようになります。
追記:
#pragma mark - ***
とハイフンをつけることで区切り線を出すことができるので更に見やすくすることができます。
たくさんメソッドがある場合などに探しやすくするのによいと思います。
#pragma mark を使うことでコードをXcodeで見やすくすることができます。
C#知ってる人はC#のpragma regionと似たような感じに使うことができます。(begin-endはいらない)
・書き方
*** のところに何か文字列を記載します。
#pragma mark ***
例:hogeとつけてみる
"control + 6" でメソッド一覧を表示すると
図のようにpragma markでつけたhogeという文字列が一覧に表示されるようになります。
追記:
#pragma mark - ***
とハイフンをつけることで区切り線を出すことができるので更に見やすくすることができます。
たくさんメソッドがある場合などに探しやすくするのによいと思います。
登録:
投稿 (Atom)