2012-03-14 65 views
-1

下面的代码可以每天使用五次。每当有新的值被创建时,它将被保存在NSMutableArray中,并且以前的值不应该从那里删除。NSMutableArray到NSUserDefaults,然后检索它iPhone

可能吗?

if ([day isEqualToString:@"f"]) { 

     if ([name isEqualToString:@"f"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f1"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"z"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f2"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"a"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f3"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"m"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f4"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"i"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f5"]; 
      [friArray addObject:faj]; 
     } 

    } 

如在此代码,如果NSString F1保存在我的friArray,下一次的值可能是f2, f3, f4 or f5。现在我将从NSUserdefaults中检索数组。它应该保存所有的值。

我该如何做到这一点?

EDITED: 

我试过了,但它给了我friarray::(null)。可能是什么问题?

NSUserDefaults *day1 = [NSUserDefaults standardUserDefaults]; 
    friArray = [[day1 objectForKey:@"frArr"] mutableCopy]; 

    name = @"f"; 

    if ([day isEqualToString:@"f"]) { 

     if ([name isEqualToString:@"f"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f1"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"z"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f2"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"a"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f3"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"m"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f4"]; 
      [friArray addObject:faj]; 
     } 
     else if ([name isEqualToString:@"i"]) { 
      NSString *faj = [[NSString alloc] initWithString:@"f5"]; 
      [friArray addObject:faj]; 
     } 

     [day1 setObject:friArray forKey:@"frArr"]; 

     NSLog(@"friarray::%@", friArray); 

    } 

回答

1
  1. 负载friArray作为的NSMutableArray从NSUser默认的的if-else阶梯
  2. 保存friArray前NSUserDefaults的在你的if-else 阶梯
  3. 不要创建阵列的每一个条件结束声明
  4. 第一次创建一次(第一次存储在NSUserDefaults中)。

    if([day1 objectForKey:@"frArr"] == nil) {

    // create array here.Happens first time. 
        friArray = [[NSMutableArray alloc]init]; 
    } 
    
+0

thanx的指导。我编辑了我的问题。请检查我得到friarray::(空) – 2012-03-14 08:59:34

1

嗨试试这个....

friArray =//Load as NSMutableArray from NSUserDefaults Dictionary for some key 

    if(!friArray)friArray =[[NSMutableArray alloc]init]; 

    if ([day isEqualToString:@"f"]) { 

      if ([name isEqualToString:@"f"]) { 

       NSString *faj = [[NSString alloc] initWithString:@"f1"]; 
       [friArray addObject:faj]; 
      } 
      else if ([name isEqualToString:@"z"]) { 

       NSString *faj = [[NSString alloc] initWithString:@"f2"]; 
       [friArray addObject:faj]; 
      } 
      else if ([name isEqualToString:@"a"]) { 

       NSString *faj = [[NSString alloc] initWithString:@"f3"]; 
       [friArray addObject:faj]; 
      } 
      else if ([name isEqualToString:@"m"]) { 

       NSString *faj = [[NSString alloc] initWithString:@"f4"]; 
       [friArray addObject:faj]; 
      } 
      else if ([name isEqualToString:@"i"]) { 

       NSString *faj = [[NSString alloc] initWithString:@"f5"]; 
       [friArray addObject:faj]; 
      } 

     } 
    //set friArray as NSMutableArray in NSUserDefaults Dictionary for some key 
0
-(void)addData{ 
    NSMutableDictionary *fridict 
    = [[NSMutableDictionary alloc]init]; 

    if ([day isEqualToString:@"f"]) { 

            if ([name isEqualToString:@"f"]) { 
                NSString *faj = [[NSString alloc] initWithString:@"f1"]; 
    [fridict setObject: faj forKey:@"f1"]; 
                       } 
            else if ([name isEqualToString:@"z"]) { 
                NSString *faj = [[NSString alloc] initWithString:@"f2"]; 
                [fridict setObject: faj forKey:@"f2"]; 
            } 
            else if ([name isEqualToString:@"a"]) { 
                NSString *faj = [[NSString alloc] initWithString:@"f3"]; 
                [fridict setObject: faj forKey:@"f3"]; 
            } 
            else if ([name isEqualToString:@"m"]) { 
                NSString *faj = [[NSString alloc] initWithString:@"f4"]; 
                [fridict setObject: faj forKey:@"f4"]; 
            } 
            else if ([name isEqualToString:@"i"]) { 
                NSString *faj = [[NSString alloc] initWithString:@"f5"]; 
                [fridict setObject: faj forKey:@"f5"]; 
            } 

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject: fridict]; 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     [defaults setObject:data forKey:@"fridict"]; 
} 

-(void)retriveData{ 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSData *data = [defaults objectForKey:@"fridict"]; 
     NSMutableDictionary *fridict = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
     NSString *faj = [fridict objectForKey:@"f1"]; 

} 
相关问题