[英]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.