Невозможно прочитать данные с помощью FMDB

Я использую FMDB. Я создаю и вставляю в таблицу. Он работает нормально.

idx INTEGER NOT NULL DEFAULT 0 PRIMARY KEY AUTOINCREMENT

topicId Varchar NOT NULL

listChat BLOB NOT NULL

enter image description here

Но я не могу получить все данные из listChat collumn. Вот мой код:

- (NSMutableArray*)readChatHistoryFromDatabaseWithTopicId:(NSString *)topicId {
    NSMutableArray *listChat = [[NSMutableArray alloc] init];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *path = [self databasePath];
    if ([fileManager fileExistsAtPath:path] == YES) {
        FMDatabase *database = [FMDatabase databaseWithPath:path];
        if (database) {
            [database open];
            NSString *query = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE topicId=\"%@\"", OCSDK_CHAT_HISTORY_TABLE_NAME, topicId];
            FMResultSet *results = [database executeQuery:query];
            [results next];
            NSData *notesData = [results dataForColumn:@"listChat"];
            [listChat addObject:notesData];
            NSLog(@"notes: %@", listChat);
        }
        [database close];
    }
    return listChat;
}

Он печатает:

enter image description here

Что не так с моим кодом?

0
источник поделиться
2 ответа

Изменение кода:

- (NSMutableArray*)readChatHistoryFromDatabaseWithTopicId:(NSString *)topicId {
    NSMutableArray *listChat = [[NSMutableArray alloc] init];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *path = [self databasePath];
    if ([fileManager fileExistsAtPath:path] == YES) {
        FMDatabase *database = [FMDatabase databaseWithPath:path];
        if (database) {
            [database open];
            NSString *query = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE topicId=\"%@\"", OCSDK_CHAT_HISTORY_TABLE_NAME, topicId];
            FMResultSet *results = [database executeQuery:query];
            while([results next]) {

              NSString *noteString = [results stringForColumn:@"topicId"]
              [listChat addObject: noteString];
              NSLog(@"notes: %@", listChat);
          }
        }
        [database close];
    }
    return listChat;
}

Вы NSData значения NSData из базы данных для ключевого topicId. Вместо этого вам нужно получить значение NSString. Проверьте код выше.

0
источник

Похоже, что массив примечаний имеет один объект NSData для записи, поэтому с вашим кодом ничего не получилось. Но я предполагаю, что вы хотите строку [results [email protected]"topicId"] вместо этого используйте [results [email protected]"topicId"].

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос