SQLite 甚至没有适当的本地日期类型(请参阅我最近关于此主题的帖子),并且在您可以在 SQLite 中存储日期的范围内,在没有一年的情况下它没有意义。也不确定没有一年的 NSDate 是否有意义。
就个人而言,我只是将日、月和年这三个字段作为单独的数字字段存储在数据库中,如果您不知道该人的出生年份,则将年份留空。因此,只需按照@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
}
}
或者使用 NSString 的 componentsSeparatedByString 将其放入 @Jacob 建议的字符串数组中:
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
}
}