SQLite には適切なネイティブの日付型さえありません (このトピックに関する私の SO 最近の投稿を参照してください)。また、SQLite に日付を格納できる限り、年がなければ意味がありません。年なしで NSDate を持つことも意味がありません。
個人的には、日、月、年の 3 つのフィールドを別々の数値フィールドとしてデータベースに保存し、その人の生まれた年がわからない場合は年を空白のままにします。したがって、@benzado が提案する単純な NSScanner を使用するだけです。
int day;
int month;
int year;
NSScanner *scanner = [NSScanner scannerWithString:birthdayString];
if ([scanner scanInt:&month] &&
[scanner scanString:@"/" intoString:nil] &&
[scanner scanInt:&day])
{
// found valid month/day
if ([scanner scanString:@"/" intoString:nil] &&
[scanner scanInt:&year])
{
// found year too
}
}
または、@Jacob によって提案されているように、NSString の componentsSeparatedByString を使用して文字列の配列に取得します。
NSString *monthString, *dayString, *yearString;
NSArray *dateComponents = [birthdayString componentsSeparatedByString:@"/"];
if ([dateComponents count] >= 2)
{
monthString = [dateComponents objectAtIndex:0];
dayString = [dateComponents objectAtIndex:1];
// found month and day
if ([dates count] == 3)
{
yearString = [dateComponents objectAtIndex:2];
// found year, too
}
}