繁体   English   中英

Objective-C(iOS / Cocoa):将第一个字母扩展为星期几

[英]Objective-C (iOS/Cocoa): expand first letter into day of week

我有一个编码字符串“ m8”或“ w12”,我想将它们扩展为一个日期对象“ monday”或“ wednesday”和一个时间对象“ 8:00”或“ 12:00”。 我可以处理的时间却很难找到一种简单的方法(可以在一个块中使用)以在Objective-C(iOS)中将'm'转换为'Monday'...

我最初想到的是获取第一个字母(总是只有一个字母,然后是1或2个数字。星期四是“ h”。而星期六和星期日不适用)。

[codedString substringToIndex:1]  // returns 'm' or 'w', etc... 

然后使用switch语句将另一个变量设置为'monday'或'tuesday',然后对数字进行类似的设置。 但是,然后我记得您不能switch NSString 那么,在Objective-C中如何进行这样的事情?

大脑伤害了在Objective-C和Ruby之间来回切换的痛苦,所以我知道我缺少明显的东西...

看起来像是字典的工作!

NSDictionary *stringToDayMap = @{@"m" : @"Monday", @"t" : @"Tuesday", @"w" : @"Wednesday", @"th" : @"Thursday", @"f" : @"Friday", @"s" : @"Saturday"};
NSString *day = [stringToDayMap objectForKey:[codedString substringWithRange:NSMakeRange(0, 1)]]; 

您可以打开任何C基本类型。 因此,如果是单个字母,则可以执行以下操作:

switch([codedString characterAtIndex:0])
{
     case 'h': NSLog(@"This is Thursday");
     ... etc ...
}

你会在被切换unichar ,但这些都是明确ASCII的超所以C字符常量“h”的正确地图上的iOS或OS X的目标。

您不能打开字符串,但可以打开字符。

switch([codedString characterAtIndex:0]) {
    case 'm': day = @"Monday";  break;
    case 't': day = @"Tuesday"; break;
    ...
}
NSRange dayRange = [@"smtwhfa" rangeOfString:[codedString substringToIndex:1]];
NSString* dayString = [dayArray objectAtIndex:dayRange.location];

其中dayArray是一个预加载了@“ Sunday”,@“ Monday”,...的NSArray。

(Dunno,星期六使用什么单一字符-适当替换。)

您可以使用所需的值创建字典。

NSDictionary *daysOfTheWeek = @{@"m": @"Monday", @"t":@"Tuesday"}; // and so on...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM