2012-05-02 9 views
0

Я пытаюсь преобразовать объект массива в строку, но все же он возвращает адрес объекта. возвращается - 0x5e1e370 но должен возвращать некоторое строковое значение.не удалось преобразовать объект Nsarray в строку

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; 

}

+0

Это объекты CoreData? –

+0

Вы уверены, что ваш массив заполнен объектами 'NSString'? Пожалуйста, сделайте это, чтобы проверить: 'NSLog (@"% @ ", [[arrStudents objectAtIndex: 0] class]);' – Alladinian

+0

no Я использую sqlite – iosDev

ответ

1

попробовать это:

NSMutableArray *arrStudents = [pillboxDb getStudentRecords]; 
pillbox *st = [arrStudents objectAtIndex:0]; 
NSLog(@"%@ , %d", st.Name,st.Din); 
1

Попробуйте это:

NSString *strHow = [[arrStudents objectAtIndex:0] stringValue] ; 
+0

это проходные исключение – iosDev

1

это, возможно, ваше возвращение объект не является строкой объекта. попробуйте

NSLog (@ "% @", arrStudents);

он покажет вам объект типа, а затем concate строки, используя этот объект

+0

он показывает, как это .. "<дот: 0x68353d0>", "< дот: 0x6835460>", "<дота: 0x6835490>", «<ДОТ : 0x68354c0> ", " <дота: 0x6835a50> " – iosDev

+0

у вас есть имя класса pillBox? – Saad

+0

есть ........... – iosDev

0

Вашего заказа дот класса (кстати, кодирование конвенции является то, что она должна быть именами дота) используют стандартный метод описания NSObject:

description Возвращает строку, представляющую содержимое класса приема .

+ (NSString *)description 

Возвращаемое значение Строка, представляющая содержимое принимающего класса.

Обсуждение Команда print-object отладчика вызывает этот метод до , производя текстовое описание объекта.

Внедрение этого метода NSObject просто печатает имя класса .

Описание переопределения для обеспечения требуемого значения. Или создайте метод stringValue, который предоставит нужную вам строку.

0
NSString *str = [arrStudents ObjectAtIndex:0]; 
0

Вы добавляете объекты класса ДОТ в array.So и есть для доступа первого объекта дота как

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

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

теперь от этого дота ˙U должны получить доступ к pillbox.Name и pillbox.Din как строки, которые не могут напрямую преобразовать массив в строку!

Смежные вопросы