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