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

これを試して:

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

おそらく、戻りオブジェクトが文字列オブジェクトではない可能性があります。試す

NSLog(@"%@",arrStudents);

オブジェクトタイプが表示され、そのオブジェクトを使用して文字列が連結されます

于 2012-05-02T11:06:58.190 に答える
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 に答える
0

カスタムのピルボックス クラス (ところで、コーディング規則では、名前は 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 に答える