我有一个具有变量名称,年龄,本地和约的类Person,我将person对象的值添加到可变数组中,如下所示:
Person *myPerson=[[Person alloc]init];
NSMutableArray *personArray=[[NSMutableArray alloc]init];
myPerson.name=namefield; //'namefield' retrieved from db
myPerson.age=agefield; //'agefield' retrieved from db
myPerson.local=locfield; //'locfield' retrieved from db
myPerson.about=aboutfield; //'aboutfield' retrieved from db
[personArray addObject:myPerson];
我尝试使用下面的代码打印元素时遇到问题;它反复显示最后一个元素,
for (int i = 0; i < [personArray count]; i++){
Person * p = [personArray objectAtIndex:i];
NSLog(@"name %@",p.name);
NSLog(@"age %@",p.age);
}
希望你能对我好,因为我是iPhone开发的新手。感谢。
答案 0 :(得分:3)
你可以写这样的代码
NSMutableArray *personArray=[[NSMutableArray alloc]init];
for(int i=o;i<noOfRecords;i++)
{
Person *myPerson=[[Person alloc]init];
myPerson.name=namefield; //'namefield' retrieved from db
myPerson.age=agefield; //'agefield' retrieved from db
myPerson.local=locfield; //'locfield' retrieved from db
myPerson.about=aboutfield; //'aboutfield' retrieved from db
[personArray addObject:myPerson];
[myPerson release];
}
然后检索数组这可能会有所帮助,因为你只提取最后一行
如果未启用ARC,则释放,否则无需释放
答案 1 :(得分:2)
您似乎正在重复使用myPerson
。将对象添加到数组时,它不会创建它的副本。相反,它只存储对象的引用,因此当您稍后更改它时,它会更改指向它的所有引用。
更改此行:
[personArray addObject:myPerson];
到这一行:
[[personArray addObject:myPerson] copy];
为了将您的人员的副本添加到数组中。
答案 2 :(得分:2)
Person *myPerson=[[Person alloc]init];
这一行,似乎你已经在for
循环之外写了这一行,你要添加对象。因此,只有一个person class
实例存在于数组的所有对象中。将该行放在for
循环中,以便在每次迭代时将新的person
对象添加到数组中。
答案 3 :(得分:0)
Person *myPerson=[[Person alloc]init];
NSMutableArray *personArray=[[NSMutableArray alloc]init];
myPerson.name=namefield; //'namefield' retrieved from db
myPerson.age=agefield; //'agefield' retrieved from db
myPerson.local=locfield; //'locfield' retrieved from db
myPerson.about=aboutfield; //'aboutfield' retrieved from db
for (int i = 0; i < [personArray count]; i++)
{
[personArray addObject:myPerson];
NSLog(@"name %@",p.name);
}
试试这个......