2016-08-03 3 views
0

日番号(例:月曜日は1、火曜日は2 ...など)から日の名前(例:月曜日、火曜日..)を取得する方法を見つけようとしています。1日のうちの日の名前を日の番号から取得します。 (iOS)

私はこのように構造化されたNSDictionaryを持っています。

{ 
close =  { 
    day = 5; 
    time = "22:00"; 
    dayName = ""; 
}; 
open =  { 
    day = 5; 
    time = "9:00"; 
    dayName = ""; 
}; 
} 

私は、キー「のdayName」の下で、この辞書にその日の名前を追加したい...値がキーで一日数「の日」に対応する日の名前です。

ありがとうございました:)

+0

数字スイッチ(日)に応じて文字列を返す列挙メソッドを作ることができます。ケース1:復帰月曜日... – Stefan

答えて

3

は日の名前を取得することから始めるのをしてみましょう:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSArray *daySymbols = dateFormatter.standaloneWeekdaySymbols; 

、これはインデックス0で、したがって、あなたのインデックスを変換する必要があります、日曜日曜日名の配列です。

NSInteger dayIndex = 1; // 1 = Monday, ... 7 = Sunday 
NSString *dayName = daySymbols[dayIndex % 7]; 
+0

ありがとうございます。これは私のニーズに完全に対応します。 –

-1
NSString * closeDay=[[yourDictionary valueForKey:@"close"] valueForKey:@"dayName"]; 
NSString * openDay=[[yourDictionary valueForKey:@"open"] valueForKey:@"dayName"]; 

をあなたがそれをチェックしたい場合は、一日でのdayNameを置き換えることができます。私が助けて欲しいです。

0

enumurationを適用し、アレイ内の日追加

NSString * closeDay=[[yourDictionary valueForKey:@"close"] valueForKey:@"dayName"]; 
NSString * openDay=[[yourDictionary valueForKey:@"open"] valueForKey:@"dayName"]; 

NSMutableArray *arr = [[NSMutableArray alloc]init]; 

[arr addObject:openDay]; 
NSMutableArray *finalArray= [[NSMutableArray alloc]init]; 

for(int i=0; i<[givenDic count];i++){ 
NSString *day= [self getDay:arr[i]]; 
NSMutableDictionary *dic= [[NSMutableDictionary alloc]init]; 
[dic setObject:day forKey:@"dayName"]; 
[finalArray addObject:dic]; 
} 

-(NSString*)getDay:(NSString *)dayNo{ 
switch([dayNo intValue]){ 

case 1: 
return Monday; 
break; 

case 2: 
return Tuesday; 
break; 

case 3: 
return Wednesday; 
break; 

case 4: 
return Thursday; 
break; 

case 5: 
return Friday; 
break; 

case 6: 
return Saturday; 
break; 

case 7: 
return Sunday; 
break; 
} 
} 
-1
NSMutableArray *array = [NSMutableArray new]; 
[array addObject:@"1"]; 
[array addObject:@"2"]; 
[array addObject:@"5"]; 
[array addObject:@"4"]; 

NSMutableArray *mainArray = [NSMutableArray new]; 

for(int i=0; i< array.count;i++){ 
    NSMutableDictionary *dict = [NSMutableDictionary new]; 
    switch ([array[i] integerValue]) { 
     case DayOne: 
      [dict setObject:array[i] forKey:@"day"]; 
      [dict setObject:@"your time" forKey:@"time"]; 
      [dict setObject:@"Sunday" forKey:@"dayName"]; 
      break; 
     case DayTwo: 
      [dict setObject:array[i] forKey:@"day"]; 
      [dict setObject:@"your time" forKey:@"time"]; 
      [dict setObject:@"Monday" forKey:@"dayName"]; 
      break; 
     case DayThree: 
      [dict setObject:array[i] forKey:@"day"]; 
      [dict setObject:@"your time" forKey:@"time"]; 
      [dict setObject:@"Tuesday" forKey:@"dayName"]; 
      break; 
     case DayFour: 
      [dict setObject:array[i] forKey:@"day"]; 
      [dict setObject:@"your time" forKey:@"time"]; 
      [dict setObject:@"Wednesday" forKey:@"dayName"]; 
      break; 
     case DayFive: 
      [dict setObject:array[i] forKey:@"day"]; 
      [dict setObject:@"your time" forKey:@"time"]; 
      [dict setObject:@"Thursday" forKey:@"dayName"]; 
      break; 
     case DaySix: 
      [dict setObject:array[i] forKey:@"day"]; 
      [dict setObject:@"your time" forKey:@"time"]; 
      [dict setObject:@"Friday" forKey:@"dayName"]; 
      break; 
     case DaySeven: 
      [dict setObject:array[i] forKey:@"day"]; 
      [dict setObject:@"your time" forKey:@"time"]; 
      [dict setObject:@"Saturday" forKey:@"dayName"]; 
      break; 
     default: 
      break; 
    } 
    [mainArray addObject:dict]; 
} 
NSLog(@"%@",mainArray); 

NS_ENUM(NSInteger、DayString){ DayOne = 1、 DayTwo、 DayThree、 DayFour、 のtypedef DayFive、 DaySix、 DaySeven };

+0

あなたが 'enum'を作成している場合は、人間が判読可能な名前で名前を付けるのはなぜですか?例えば'DayOne'ではなく' Monday'ですか?また、Appleのコーディングガイドラインでは、名前の競合を避けるために、 'kDayStringMonday'、' kDayStringTuesday'などの名前を付ける必要があります。 – Sulthan

+0

はい、私が理解しているとおり、列挙型のメンバーを読み込み可能に変更する必要があります。 – Pavankumar

関連する問題