Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Obj-C-检查数组中的数组是否有值?_Ios_Objective C - Fatal编程技术网

Ios Obj-C-检查数组中的数组是否有值?

Ios Obj-C-检查数组中的数组是否有值?,ios,objective-c,Ios,Objective C,我有一个可变数组(self.arr1),允许用户向其中添加对象。在本例中,self.arr1保存为NSUserDefaults,如下所示: ( ( ( "Park" ), Corner Store ), "Cafe" ), "Brewery" ) 我使用下面的代码将对象添加到self.arr1(即,当点击按钮时,将对象添加到self.arr

我有一个可变数组(self.arr1),允许用户向其中添加对象。在本例中,self.arr1保存为NSUserDefaults,如下所示:

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

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

ViewController.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"];
    
}

如何读取一个包含3个开括号和4个闭括号的数组?@ElTomato我只是复制并粘贴了控制台在记录NSUserDefaults时显示的内容。一定是漏掉了。是的,你的数据结构不清楚;从代码来看,似乎您一直在将现有数组作为单个值(即嵌套数组)添加到新数组中,然后将新字符串作为单个值添加到新数组中。您可能需要
self.arr1=[arrayOfPlaces mutableCopy]
然后添加新字符串,但不包括1)。将数组存储在
NSUserDefaults
中并不是一个很好的数据持久性策略,2)如果您刚刚开始,请从Swift开始,而不是从Objective C开始。Ahh self.arr1=[arrayOfPlaces mutableCopy];这正是我想要的-谢谢!我不仅仅是在开始一个老的Obj-C项目。也就是说,我知道很多开发者仍然喜欢Obj-C而不是Swift;强烈建议改变@保罗11阿普尔很清楚,斯威夫特是前进的方向。Objective C不会消失,但它无法获得像SwiftUI这样的新技术