Ios 如何将一个NSArray数据添加到另一个NSArray字段?

Ios 如何将一个NSArray数据添加到另一个NSArray字段?,ios,objective-c,nsarray,Ios,Objective C,Nsarray,我觉得问题的标题有点不匹配,你能看到下面的解释吗 目前我有两个NSArray的数据: NSArray *arr1 = [[NSArray alloc]initWithObjects:@"aa",@"bb",@"1",@"cc", nil]; NSArray *arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4]; 在1st数组中,我从服务器获取了数据 我需要在2nd数组中的特定UILabel中加载这些参数 我正在查看O/p是否为: se

我觉得问题的标题有点不匹配,你能看到下面的解释吗

目前我有两个NSArray的数据:

 NSArray *arr1 = [[NSArray alloc]initWithObjects:@"aa",@"bb",@"1",@"cc", nil];

 NSArray *arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];
1st数组中,我从服务器获取了数据

我需要在2nd数组中的特定UILabel中加载这些参数

我正在查看O/p是否为

self.lbl1.text = @"aa";

self.lbl2.text = @"bb";

self.lbl3.text = @"1";

self.lbl4.text = @"cc";
有什么可能性吗,你能帮我一下吗

ViewController.h中

@property (strong, nonatomic)IBOutlet UILabel* lbl1;
@property (strong, nonatomic)IBOutlet UILabel* lbl2;
@property (strong, nonatomic)IBOutlet UILabel* lbl3;
@property (strong, nonatomic)IBOutlet UILabel* lbl4;
ViewController.m中

- (void)viewDidLoad {
[super viewDidLoad];

NSArray *arr1 = [[NSArray alloc]initWithObjects:@"aa",@"bb",@"1",@"cc", nil];
NSArray *arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];

for(int i=0;(i<[arr1 count])&&(i<[arr2 count]);i++)
{
    UILabel *label = (UILabel*)[arr2 objectAtIndex:i];
    label.text = (NSString*)[arr1 objectAtIndex:i];
}
NSLog(@"%@,\n %@,\n %@, \n%@",self.lbl1,self.lbl2,self.lbl3,self.lbl4);

您不能直接执行此操作,但可以将
arr2
设置为:

arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];
然后

for (UILabel *lbl in arr2) {
    NSInteger i=[arr2 indexOfObject:lbl];
    lbl.text = [arr1 objectAtIndex:i];
}

您不能直接执行此操作,但可以将
arr2
设置为:

arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];
然后

for (UILabel *lbl in arr2) {
    NSInteger i=[arr2 indexOfObject:lbl];
    lbl.text = [arr1 objectAtIndex:i];
}

将标签存储在数组中,而不是其文本属性中

NSArray *arr1 = [[NSArray alloc]initWithObjects:@"aa",@"bb",@"1",@"cc", nil];
NSArray *arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];

for(int i=0;(i<[arr1 count])&&(i<[arr2 count]);i++)
{
  UILabel *label = (UILabel*)[arr2 objectAtIndex:i];
  label.text = (NSString*)[arr1 objectAtIndex:i];
}
NSArray*arr1=[[NSArray alloc]initWithObjects:@“aa”、“bb”、“1”、“cc”、“nil];
NSArray*arr2=@[self.lbl1,self.lbl2,self.lbl3,self.lbl4];

对于(int i=0;(i将标签存储在数组中,而不是其文本属性中)

NSArray *arr1 = [[NSArray alloc]initWithObjects:@"aa",@"bb",@"1",@"cc", nil];
NSArray *arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];

for(int i=0;(i<[arr1 count])&&(i<[arr2 count]);i++)
{
  UILabel *label = (UILabel*)[arr2 objectAtIndex:i];
  label.text = (NSString*)[arr1 objectAtIndex:i];
}
NSArray*arr1=[[NSArray alloc]initWithObjects:@“aa”、“bb”、“1”、“cc”、“nil];
NSArray*arr2=@[self.lbl1,self.lbl2,self.lbl3,self.lbl4];

对于(int i=0;(i假设两个数组的大小相同,可以执行以下操作:

NSArray *arr3 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];

for (NSUInteger i = 0; i < arr1.count; i++) {
    arr3[i].text = arr1[i];
}

假设两个阵列的大小相同,可以执行以下操作:

NSArray *arr3 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];

for (NSUInteger i = 0; i < arr1.count; i++) {
    arr3[i].text = arr1[i];
}

简短的回答:这不可能是你想要的方式

这是因为
self.lbl1.text
是一个NSString,不再附加到
self.lbl1
text
是UILabel的副本属性)。如果更改此NSString,则 不会更改self.lbl1.text的值

更好的方法可能是只保存标签,而不保存其值:

NSArray *arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];
在这种情况下,您可以在阵列中循环:

for (NSInteger i=0; i < arr2.count && i < arr1.count; i++) {
    ((UILabel*)[arr2 objectAtIndex:i]).text = [arr1 objectAtIndex:i];
}
for(NSInteger i=0;i
简短回答:这不可能是你想要的方式

这是因为
self.lbl1.text
是一个NSString,不再附加到
self.lbl1
text
是UILabel的副本属性)。如果更改此NSString,则 不会更改self.lbl1.text的值

更好的方法可能是只保存标签,而不保存其值:

NSArray *arr2 = @[self.lbl1, self.lbl2, self.lbl3, self.lbl4];
在这种情况下,您可以在阵列中循环:

for (NSInteger i=0; i < arr2.count && i < arr1.count; i++) {
    ((UILabel*)[arr2 objectAtIndex:i]).text = [arr1 objectAtIndex:i];
}
for(NSInteger i=0;i
将标签存储在数组中,而不是它们的文本属性。如果你不使用我的,请重新校准答案@shahim将标签存储在数组中,而不是它们的文本属性。如果你不使用我的,请重新校准答案@shahim抱歉,我在“arr2”上崩溃了like::由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“***-[\uu NSPlaceholderArray initWithObjects:count:]:尝试从对象[0]插入nil对象”是否有标签1、lbl2..等具有
nil
值?在第二行中放置断点(
NSArray*arr2=…
)并检查它们的值。@MannamBrahmam请检查所有IBoutlet是否正确连接。问题是其中一个标签是
nil
尝试将NSLog作为第一行。它将打印。很抱歉,我在“arr2”上遇到崩溃,如::由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'***-[\uu NSPlaceholderArray initWithObjects:count::]:尝试从对象[0]插入nil对象'是否有标签1、lbl2..等具有
nil
值?在第二行中放置断点(
NSArray*arr2=…
)并检查它们的值。@MannamBrahmam请检查所有IBOutlet是否正确连接。问题是其中一个标签是
nil
尝试将NSLog作为第一行。它将打印出来。