在iphone中选择日期选择器时间时,如何替换UserDefault数组

在iphone中选择日期选择器时间时,如何替换UserDefault数组,iphone,objective-c,Iphone,Objective C,我有一个通过通知设置报警的应用程序。当通过datepicker选择日期设置报警时,特定日期将保存在userdefaults中,作为日期数组,键为@“time”。所有报警集都显示在tableview上。此tableview有两个按钮,一个用于编辑,另一个用于添加新报警。单击“编辑”按钮后,tableview将更改为编辑模式,单击任何特定行将打开编辑页。在编辑页中有一个“保存”按钮。编辑页用于编辑特定保存的通知i、 e要编辑我最初在tableview类的didselect方法中显示的通知,我已通过所

我有一个通过通知设置报警的应用程序。当通过datepicker选择日期设置报警时,特定日期将保存在userdefaults中,作为日期数组,键为@“time”。所有报警集都显示在tableview上。此tableview有两个按钮,一个用于编辑,另一个用于添加新报警。单击“编辑”按钮后,tableview将更改为编辑模式,单击任何特定行将打开编辑页。在编辑页中有一个“保存”按钮。编辑页用于编辑特定保存的通知i、 e要编辑我最初在tableview类的didselect方法中显示的通知,我已通过所选行的indexpath。当编辑页面打开时,用户可以通过打开日期选择器来更改时间。但问题是,当时间更改时,如何用properindex中更改的日期替换日期数组。 这是我的代码,当我从datepicker中选择任何时间时调用它

-(void)convertDueDateFormat{

    app = (StopSnoozeAppDelegate*)[[UIApplication sharedApplication]delegate];

    app.timerdate = [self.datePicker date];
    NSLog(@"earier picker date:%@",app.timerdate);
    [app.dateFormatter setDateFormat:@"hh:mm a"];
    NSDate *today = [NSDate date];
    app.alarmtime = [app.dateFormatter stringFromDate:app.timerdate];
    NSDate *alarmdate = [app.dateFormatter dateFromString:app.alarmtime];
    // this is used to compare the timerdate is lesser than the current time. If yes than it will add 7 days to it. 
    if ([app.timerdate compare:today] == NSOrderedAscending)
    {

        NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];  
        NSDateComponents *dateComponents = [[NSDateComponents alloc] init];   
        [dateComponents setDay:7];   
        app.timerdate = [gregorian dateByAddingComponents:dateComponents toDate:[self.datePicker date] options:0];  
        NSLog(@"check picker date:%@",app.timerdate);
        [dateComponents release];  
        [gregorian release];

    }


    NSLog(@"picker date:%@",app.timerdate);


    if ([[NSUserDefaults standardUserDefaults] arrayForKey:@"time"]==nil)
    {
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        array =  [[NSMutableArray alloc] initWithArray:[userDefaults arrayForKey:@"time"]];

        [[NSUserDefaults standardUserDefaults] setObject:array forKey:@"time"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"time"]);
    }
    else
    {
        array = [[NSUserDefaults standardUserDefaults] objectForKey:@"time"];
        app.array_dates = [[NSMutableArray alloc] init];
        for(int i =0;i<[array count];i++)
        {
            [app.array_dates addObject:[array objectAtIndex:i]];
        }
        if (app.timerdate) {
            [app.array_dates addObject:app.timerdate];

        }

        [[NSUserDefaults standardUserDefaults] setObject:app.array_dates forKey:@"time"];

        [[NSUserDefaults standardUserDefaults] synchronize];
        NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"time"]);
    }   


  }
-(void)convertDueDateFormat{
app=(StopSnoozeAppDelegate*)[[UIApplication sharedApplication]委托];
app.timerdate=[self.datePicker date];
NSLog(@“早期选择器日期:%@”,应用程序时间日期);
[app.dateFormatter setDateFormat:@“hh:mm a”];
NSDate*今天=[NSDate日期];
app.alarmtime=[app.dateFormatter stringFromDate:app.timerdate];
NSDate*alarmdate=[app.dateFormatter dateFromString:app.alarmtime];
//这用于比较timerdate小于当前时间。如果是,则会增加7天。
如果([app.timerdate compare:today]==取消搜索)
{
NSCalendar*gregorian=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents*dateComponents=[[NSDateComponents alloc]init];
[日期:7];
app.timerdate=[gregorian dateByAddingComponents:dateComponents toDate:[self.datePicker date]选项:0];
NSLog(@“检查选择器日期:%@”,应用程序时间日期);
[发布日期];
[公历释放];
}
NSLog(@“选择器日期:%@”,应用程序时间日期);
如果([[NSUserDefaults standardUserDefaults]阵列工作:@“时间”]==nil)
{
NSUserDefaults*userDefaults=[NSUserDefaults standardUserDefaults];
array=[[NSMutableArray alloc]initWithArray:[userDefaults ArrayWorkey:@“time”];
[[NSUserDefaults standardUserDefaults]设置对象:数组forKey:@“time”];
[[NSUserDefaults standardUserDefaults]同步];
NSLog(@“%@,[[NSUserDefaults standardUserDefaults]objectForKey:@“time”]);
}
其他的
{
数组=[[NSUserDefaults standardUserDefaults]objectForKey:@“time”];
app.array_dates=[[NSMutableArray alloc]init];

对于(inti=0;i使用下面的方法,它将帮助您

NSArray *arry_img = [[NSArray alloc] initWithObjects:@"frame_18@3x.png",@"frame_17@3x.png",@"frame_1222@3x.png",@"frame_10@3x.png",@"frame_3@3x.png",@"frame_4@3x.png",@"frame_4@3x.png",@"frame_1@3x.png",@"frame_4@3x.png",@"frame_4@3x.png",nil];
        [[NSUserDefaults standardUserDefaults] setObject:arry_img forKey:@"categoryArray"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSLog(@"before %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"categoryArray"]);
        NSMutableArray *array_cat =[[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"categoryArray"]] ;
        [array_cat replaceObjectAtIndex:1 withObject:@"1.png"];
        [[NSUserDefaults standardUserDefaults] setObject:array_cat forKey:@"categoryArray"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSLog(@"after:%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"categoryArray"]);

像下面这样使用它会帮助你

NSArray *arry_img = [[NSArray alloc] initWithObjects:@"frame_18@3x.png",@"frame_17@3x.png",@"frame_1222@3x.png",@"frame_10@3x.png",@"frame_3@3x.png",@"frame_4@3x.png",@"frame_4@3x.png",@"frame_1@3x.png",@"frame_4@3x.png",@"frame_4@3x.png",nil];
        [[NSUserDefaults standardUserDefaults] setObject:arry_img forKey:@"categoryArray"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSLog(@"before %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"categoryArray"]);
        NSMutableArray *array_cat =[[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"categoryArray"]] ;
        [array_cat replaceObjectAtIndex:1 withObject:@"1.png"];
        [[NSUserDefaults standardUserDefaults] setObject:array_cat forKey:@"categoryArray"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSLog(@"after:%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"categoryArray"]);

如果要替换特定对象,则必须使用

[arr indexOfObject:<#(id)#>]
[arr indexOfObject:]
这将返回数组包含的特定日期对象的索引

您还可以通过以下方式检查对象:

 if([arr containsObject:<#(id)#>])
{
    int index = [arr indexOfObject:<#(id)#>];
}
if([arr containsObject:]
{
int index=[arr indexOfObject:];
}

如果要替换特定对象,则必须使用

[arr indexOfObject:<#(id)#>]
[arr indexOfObject:]
这将返回数组包含的特定日期对象的索引

您还可以通过以下方式检查对象:

 if([arr containsObject:<#(id)#>])
{
    int index = [arr indexOfObject:<#(id)#>];
}
if([arr containsObject:]
{
int index=[arr indexOfObject:];
}

Narayana,但是我被replaceObjectAtIndex:1弄糊涂了。如果我不知道数组要替换的索引号,那么应该写什么来代替1,你只需要替换你的索引。没有索引,你不能替换特定的对象,但是如何知道数组索引Narayana,但是我被replaceObjectAtIndex:1弄糊涂了。我如果我不知道数组中要替换的索引号,那么应该写什么来代替1,您只需替换索引。没有索引,您无法替换特定对象,但如何知道数组索引