繁体   English   中英

Obj-C - 检查数组中的 arrays 的值?

[英]Obj-C - Check arrays within array for value?

我有一个可变数组(self.arr1),允许用户向其中添加对象。 在这个例子中,self.arr1 被保存到 NSUserDefaults,看起来像这样:

(
    (
        (
         "Park"
        ),
         Corner Store
     ),
     "Cafe"
),
"Brewery"
)

我正在使用下面的代码将对象添加到 self.arr1(即,当点击按钮时,将对象添加到 self.arr1),然后将 self.arr1 添加到 NSUserDefaults。 然后,我想在用户下次打开应用程序时检查 NSUserDefaults 中是否存在“Park”。 即使它存在,代码也在执行,就好像它不存在一样。 这几乎就像因为每次点击按钮时我都在初始化一个新数组,所以它看不到 Park 确实存在于 self.arr1 中。 如何让我的代码检查 self.arr1 中的所有值?

如果在点击按钮时我没有初始化数组,它根本不允许我添加对象,并且数组返回 null。

视图控制器.m


-(void)viewDidLoad {
                                                      
    if ([self.placeDefaults containsObject:self.locationName.text]      {
                                 
                      // DO SOEMTHING

    }    
        
}
    
    
- (IBAction)collectPoints:(id)sender {
    
     self.arr1 = [[NSMutableArray alloc] init];
                                                                            
     [self.arr1 addObject:arrayOfPlaces];

     self.placeDefaults = [NSUserDefaults standardUserDefaults];
     [self.arr1 addObject:self.savedTitle];
                                                                            
     [self.placeDefaults setObject:self.arr1 forKey:@"visitedPlaces"];
    
}

您的代码将现有数组添加为嵌套数组,然后将新的单个字符串添加到末尾。

您需要做的就是制作现有数组的可变副本,然后添加新值。 当局部变量可以使用时,也不需要使用属性。

- (IBAction)collectPoints:(id)sender {
    
     NSMutableArray newArray = [[arrayOfPlaces mutableCopy];
                                                                            
     [newArray addObject:self.savedTitle];

     NSUserDefaults *placeDefaults = [NSUserDefaults standardUserDefaults];
                                                                            
     [placeDefaults setObject:newArray forKey:@"visitedPlaces"];
    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM