如何将NSArray字符串对象值分配给其他NSString变量

NSMutableArray *nameArray = [[NSMutableArray alloc] init]; [nameArray addObject:@"abc"]; [nameArray addObject:@"cdf"]; [nameArray addObject:@"jkl"]; //Use a for each loop to iterate through the array for (NSString *s in nameArray) { NSLog(@"value is %@", s); } 

上面的代码显示了nameArray的所有值。 但我想将所有这些值分配给这些NSString:

 NSString *a; NSString *b; NSString *cd; 

aray可以有1个或多个元素但不超过5个。

实际上,我有5个按钮,单击每个按钮会将NSString值(值为:f1,f2,f3,f4和f5)添加到NSMutableArray。 现在,如果用户单击2个按钮或每天3或5个按钮,则由用户决定。 现在所有这些值都将保存在NSMutableArray中(可以是1或2但不超过5)。 NSMutableArray将保存在NSUserDefaults中。 这个NSMutableArray将用于另一个我有一些UIImageView(1,2,3,4和5)的视图中。 现在我将从该数组中获取字符串值(f1,f2,f3)。 如果是f1,那么如果图像是f3然后是图像3,则将图像分配给UIImage 1,依此类推。

怎么做到这一点?

我会做那样的事情:

 NSArray *array = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", nil]; NSString *a = nil, *b = nil, *c = nil, *d = nil, *e = nil; NSUInteger idx = 0; for ( NSString *string in array ) { switch ( idx++ ) { case 0: a = string; break; case 1: b = string; break; case 2: c = string; break; case 3: d = string; break; case 4: e = string; break; } } 

由于您的数组中至少有一个元素:

  NSString *a = (NSString *)[nameArray objectAtIndex:0]; 

最多将有五个要素:

  for(int i = 1;i<[array count];i++) { if(i == 1) { NSString *b = (NSString *)[nameArray objectAtIndex:1]; } else if(i == 2) { NSString *c = (NSString *)[nameArray objectAtIndex:2]; } else if(i == 3) { NSString *d = (NSString *)[nameArray objectAtIndex:3]; } else if(i == 4) { NSString *e = (NSString *)[nameArray objectAtIndex:4]; } } 
 a = [nameArray objectAtIndex:0]; b = [nameArray objectAtIndex:1]; cd = [nameArray objectAtIndex:2]; 

如果要将数组元素放入具有不同名称的单独变量中,则目标c中没有自动化(不像在JavaScript中),因为它是编译语言而不是解释语言。 你可以使用NSDictionary实现类似的东西,即用字符串或任何你想要的类型“索引”对象。

您可以继续使用包含5个无符号字符的简单C数组,其中数组的索引将指向您的数据。 像这样的东西:

 unsigned char nameArray[5] = {0, 0, 0, 0, 0}; // if you want to set the 3rd variable, use: nameArray[2] = 1; // to query: if (nameArray[2]) { ... } // When you need to save it to NSUserDefaults, wrap it into an NSData: NSData* nameData = [NSData dataWithBytes:nameArray length:sizeof(nameArray)]; [[NSUserDefaults standardUserDefaults] setObject:nameData forKey:@"myKey"]; // To query it: NSData* nameData = [[NSUserDefaults standardUserDefaults] dataForKey:@"myKey"]; const unsigned char* nameArray2 = [nameData bytes]; unsigned char second = nameArray2[2]; 

编辑:纠正arrays访问

如果最多有五个选项,最简单的方法是使用if-else-if链。

 NSString *label1 = nil, *label2 = nil, *label3 = nil, *label4 = nil, *label5 = nil; for (NSString *s in nameArray) { if (label1 == nil) label1 = s; else if (label2 == nil) label2 = s; else if (label3 == nil) label3 = s; else if (label4 == nil) label4 = s; else if (label5 == nil) label5 = s; } 
  NSString *str1=nil; NSString *str2=nil; NSString *str3=nil; NSString *str4=nil; for (LocationObject *objLoc in arrLocListFirstView) { if (objLoc.isLocSelected) { for (LocationObject *obj in arrLocListFirstView) { if (str1 == nil) str1 = objLoc.strLoc; else if (str2 == nil) str2 = obj.strLoc; else if (str3 == nil) str3 = obj.strLoc; else if (str4 == nil) str4 = obj.strLoc; } NSString *combined = [NSString stringWithFormat:@"%@,%@,%@,%@", str1,str2,str3,str4]; lblLocation.text=combined; (displaying text in UILabel) } }