从[myarray objectAtIndex:indexPath.row]而不是NSString中获取对象

时间:2013-01-16 04:39:14

标签: iphone ios uitableview

我有一个名为contact的自定义类。此类具有name, address等属性。 我希望创建一个类型为contact的数组,并在UItableview中的自定义单元格中显示每个属性的值。 用于将数据存储在数组中的代码:

while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
            // Read the data from the result row
            NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
            myContact.nm = aName;
            NSString *aAddress = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
            myContact.address = aAddress;

            NSLog(@"%@",aName);     
            [list.details addObject:myContact];
            NSLog(@"%@", list.details);

}

此处详细信息是在.h

中声明为@property(nonatomic,retain)NSMutableArray *details;的数组

我的问题是如何检索每个索引上的值,如:

[0]->name
[0]->address

[1]->name
[1]->address ....

我在tableview.m中的代码:

cell.name.text = [details objectAtIndex:indexPath.row]; // not working

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:1)

首先制作一个类的对象。

Contact *con = [details objectAtIndex:indexPath.row];

它会将所有数组存储在'con'对象中。

然后,使用它,

NSLog("Name :: %@", con.nm);
NSLog("Addr :: %@", con.address);

它会引用Name&该特定联系对象的地址。

感谢。

答案 1 :(得分:1)

[[details objectAtIndex:indexPath.row] nm];

nm中,您只需输入您的对象即可。这对我有用。

答案 2 :(得分:0)

嗯,你在找

吗?
cell.name.text = [[details objectAtIndex:indexPath.row] name];

答案 3 :(得分:0)

[details objectAtIndex:indexPath.row];返回Contact个对象。您需要的是nm对象的Contact属性,它代表代码中的名称。

试试这个,

Contact *myContacts = [details objectAtIndex:indexPath.row]; 
cell.name.text = [myContacts nm]; //or [[details objectAtIndex:indexPath.row] nm];

同样,您也可以获得[myContacts address]

修改 根据您在评论中的问题,答案是:

while(sqlite3_step(compiledStatement) == SQLITE_ROW) {

        Contact *myContact = [[Contact alloc] init]; //you should add this here, not outside the loop
        // Read the data from the result row
        NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
        myContact.nm = aName;
        NSString *aAddress = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
        myContact.address = aAddress;

        NSLog(@"%@",aName);
        [list.details addObject:myContact];
        NSLog(@"%@", list.details);

    }

答案 4 :(得分:0)

你需要:

cell.name.text = [[details objectAtIndex:indexPath.row] nm];

使用此行时:

[details objectAtIndex:indexPath.row];

返回contact类型的对象。然后,您需要获取存储名称的nm属性。 所以你需要使用:

[[details objectAtIndex:indexPath.row] nm];