2009年8月1日土曜日

Cider 0.1.1リリースしました

CiderにNSErrorを拡張するコードを追加しました。
特にCoreDataを用いているとNSErrorを扱う機会が増えて来ます。
また、CoreDataが返すNSErrorにはエラーがネストした状態で返って来ます。
この中から、自分が扱いたいドメインのエラーを返したり、エラー内容をUIAlertViewに表示させるメソッドを追加しています。


NSManagedObjectクラスを継承したクラスでvalidationを書きます。
この時にdomainを独自のドメイン(MyDomain)のNSErrorオブジェクトを返します。

- (BOOL)validatePortNo:(id *)ioValue error:(NSError **)error
{
NSInteger value = [*ioValue intValue];
if (value < 1000 || value > 65535) {
NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:@"1000から65535までにして下さい" forKey:NSLocalizedDescriptionKey];
*error = [NSError errorWithDomain:@"MyDomain" code:1000 userInfo:userInfoDict];
return NO;
} else {
return YES;
}
}


-save:で返るerrorはCoreDataのドメインの場合があり、MyDomainのエラーはその中にネストされた状態で返る事があります。
-showErrorForDomain:でMyDomainを指定する事で、-validatePortNo:で返したエラーを捕まえる事が出来き、そのままUIAlertViewに表示します。

NSError error = nil;
[self.managedObjectContext save:&error]
if (error) {
[error showErrorForDomain:@"MyDomain"];
}

0 件のコメント: