0

我正在尝试将数组对象转换为字符串,但它仍然返回对象的地址。它正在返回 - 0x5e1e370 但应该返回一些字符串值。

NSMutableArray *arrStudents = [pillboxDb getStudentRecords];
NSString *strHow = [arrStudents objectAtIndex:0];
NSLog(@"%@",strHow);

这是 getStudentRecords 的代码

+(NSMutableArray*)getStudentRecords{

NSArray *arrDocPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *strDestPath = [NSString stringWithFormat:@"%@/samplepillbox1.sqlite",[arrDocPath objectAtIndex:0]];
NSMutableArray *arrStudents = [[NSMutableArray alloc]init];
sqlite3 *db;
if(sqlite3_open([strDestPath UTF8String], &db)==SQLITE_OK)
{

    NSString *query = @"select * from doctor_master";
    void* v;
    char* err_msg;
    sqlite3_stmt *studentStmt;

    if(sqlite3_prepare_v2(db, [query UTF8String], -1, &studentStmt, &err_msg)==SQLITE_OK)
    {
        while (sqlite3_step(studentStmt)==SQLITE_ROW) {

            int sno = sqlite3_column_int(studentStmt, 0);
            NSString *sname = [NSString stringWithUTF8String: sqlite3_column_text(studentStmt, 1)];
            //float marks = sqlite3_column_double(studentStmt, 2);

            pillbox *st = [[pillbox alloc]init];
            st.Din = sno;
            st.Name = sname;

            [arrStudents addObject:st];
        }

    }

}
return arrStudents;

}

4

6 回答 6

1

试试这个:

NSString *strHow = [[arrStudents objectAtIndex:0] stringValue] ;
于 2012-05-02T11:01:44.450 回答
1

也许您的返回对象不是字符串对象。尝试

NSLog(@"%@",arrStudents);

它将向您显示对象类型,然后使用该对象连接字符串

于 2012-05-02T11:06:58.190 回答
1

试试这个:

NSMutableArray *arrStudents = [pillboxDb getStudentRecords];
pillbox *st = [arrStudents objectAtIndex:0];
NSLog(@"%@ , %d", st.Name,st.Din);
于 2012-05-02T11:45:07.410 回答
0

您的自定义 pillBox 类(顺便说一句,编码约定是它应该命名为 PillBox)正在使用标准的 NSObject 描述方法:

description 返回一个字符串,表示接收类的内容。

+ (NSString *)description

返回值 一个字符串,表示接收类的内容。

讨论 调试器的 print-object 命令调用此方法来生成对象的文本描述。

NSObject 对这个方法的实现只是简单地打印类的名称。

覆盖描述以提供您想要的值。或者,创建一个提供所需字符串的 stringValue 方法。

于 2012-05-02T11:20:47.593 回答
0
NSString *str = [arrStudents ObjectAtIndex:0];
于 2012-05-02T11:20:47.477 回答
0

您正在将药盒类的对象添加到数组中。因此您必须首先访问药盒对象,例如

for(int i=0;i<[array count];i++)
{
pillbox *pill=[array objectAtIndex:i];

NSLog(@"%@  %@",pillbox.Name,pillbox.Din);
}

现在,您必须从该药盒中访问 pillbox.Name 和 pillbox.Din 作为字符串,您不能直接将数组转换为字符串!

于 2012-05-02T11:46:37.897 回答