2018年1月16日

Xcodeで前日の日付を取得するには、以下の方法になります。
この方法では、システム日付をもとに取得してくれます。
秒単位で指定することで、過去はマイナス付で指定します。

    NSDateFormatter *NsdateFor = [[NSDateFormatter alloc] init];
    NsdateFor.dateFormat = @"yyyyMMdd";

//今日
    NSString *today = [NsdateFor stringFromDate:[NSDate date];

//前日
    NSString *yesterday = [NsdateFor stringFromDate:[NSDate dateWithTimeIntervalSinceNow:-24*60*60]];

 


指定日の前日を取得したいとき、上記当日日付をもとに対応しようと試みましたが、うまい対処ができないため古典的なロジックで対応することになりました。(この方法しかないのか調べましたが回答を得られなかったので以下のロジックで対処しています。)

    NSString *sitei_date = @"20180116";
    
    NSString *date_y = [sitei_date substringWithRange:NSMakeRange(0, 4)];	//年
    NSString *date_m = [sitei_date substringWithRange:NSMakeRange(4, 2)];	//月
    NSString *date_d = [sitei_date substringWithRange:NSMakeRange(6, 2)];	//日
    
    NSInteger date_y2 = [date_y intValue];	//年 数値変換
    NSInteger date_m2 = [date_m intValue];	//月 数値変換
    NSInteger date_d2 = [date_d intValue];	//日 数値変換
    
    if (date_d2 != 1){  //1日以外
        date_d2 = date_d2 - 1;		//1日以外は、前日をセット
    }else{
        
        if (date_m2 != 1){                      //1日で1月以外
            date_m2 = date_m2 - 1;
            date_d2 = 31;                       //前月末を31日でセット
            
            if ((date_m2 == 4)||(date_m2 == 6)||
                (date_m2 == 9)||(date_m2 == 11)){   //小の月をセットし直す
                date_d2 = 30;
                
            }
            if (date_m2 == 2){                  //2月の対応
                date_d2 = 28;
                if (date_y2 == 2020){           //2020年 閏年
                    date_d2 = 29;
                }
            }
    
        }else{                                  //1月1日のとき 前年大晦日セット
            date_y2 = date_y2 - 1;
            date_m2 = 12;
            date_d2 = 31;
        }
    }
    
    date_y = [NSString stringWithFormat:@"%04d",date_y2];	//4桁固定
    date_m = [NSString stringWithFormat:@"%02d",date_m2];	//2桁固定
    date_d = [NSString stringWithFormat:@"%02d",date_d2];	//2桁固定
    
    NSString *date_wk = [date_y stringByAppendingString:date_m];	//年月
    NSString *next_date = [date_wk stringByAppendingString:date_d];	//年月日
    
    NSLog(@"xxxx %@",next_date);	//確認用
    

追記2018.01.18
指定日より翌日を算出するロジック

-(void)tomorrow_sec{
    

    NSString *Wdate_chk = @"20180118";	//指定日
    NSString *date_y = [Wdate_chk substringWithRange:NSMakeRange(0, 4)];//年
    NSString *date_m = [Wdate_chk substringWithRange:NSMakeRange(4, 2)];//月
    NSString *date_d = [Wdate_chk substringWithRange:NSMakeRange(6, 2)];//日
    
    NSInteger date_y2 = [date_y intValue];//年 数値変換
    NSInteger date_m2 = [date_m intValue];//月 数値変換
    NSInteger date_d2 = [date_d intValue];//日 数値変換
    
    date_d2 = date_d2 + 1;//翌日セット
    
    if ((date_m2 == 1)||(date_m2 == 3)||(date_m2 == 5)||
        (date_m2 == 7)||(date_m2 == 8)||(date_m2 == 10)){	//大の月
        
        if (date_d2 == 32){		//32日なら翌日とする
            date_m2 = date_m2 + 1;
            date_d2 = 1;
        }
        
    }
        
    if (date_m2 == 12){	//12月
        if (date_d2 == 32){	//32日なら翌年1月1日セット
            date_y2 = date_y2 + 1;
            date_m2 = 1;
            date_d2 = 1;
        }
    }
    
    if ((date_m2 == 4)||(date_m2 == 6)||
        (date_m2 == 9)||(date_m2 == 11)){	//小の月
        
        if (date_d2 == 31){	//31日なら翌日とする
            date_m2 = date_m2 + 1;
            date_d2 = 1;
        }
    }
    if (date_m2 == 2){	//2月
        
        if (date_d2 >= 29){	//29日以上のとき
            if (date_y2 != 2020){	//閏年でない年
                
                date_m2 = date_m2 + 1;
                date_d2 = 1;
                
            }else{
                if (date_d2 == 30){	//2020年
                    date_m2 = date_m2 + 1;
                    date_d2 = 1;
                }
                
            }
        }
    }
    
    date_y = [NSString stringWithFormat:@"%04d",date_y2];
    date_m = [NSString stringWithFormat:@"%02d",date_m2];
    date_d = [NSString stringWithFormat:@"%02d",date_d2];
    
    NSString *date_ym = [date_y stringByAppendingString:date_m];
    Wdate_chk = [date_ym stringByAppendingString:date_d];
    
//        NSLog(@"xxxx %@",Wdate_chk);
    
}