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