Мне нужна помощь! Пожалуйста. Я пытаюсь разработать очень очень простое приложение, в основном, просто для чтения книг. В идеале, первое представление должно быть представлением uitable, перечисляющим имена глав, затем выбор строки приведет вас к подробному представлению с разделом, разделенным на сегменты. Обратите внимание, что сегменты на самом деле являются их собственными записями внутри таблицы. Поэтому я пытаюсь заполнить представление uitext несколькими записями из таблицы БД. В процессе получения всех моих данных из этой базы данных я просто запутался. Я искал в Интернете несколько уроков и нашел очень полезный здесь . Я прошел через это шаг за шагом, и это имело смысл, все это имело смысл. Но вместо того, чтобы использовать предоставленную им базу данных, я хотел попробовать вставить свою собственную базу данных, в которой есть все содержимое, которое я хотел бы видеть, и оно не будет работать. Это выдает приятную *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSString stringWithUTF8String:]: NULL cString'
ошибку, которую я не могу понять. Это звучит знакомо или имеет смысл для кого-либо? Код для метода readFromDB:
-(void) readTextFromDatabase {
// Setup the database object
sqlite3 *database;
// Init the animals Array
textAr = [[NSMutableArray alloc] init];
// Open the database from the users filessytem
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
// Setup the SQL Statement and compile it for faster access
const char *sqlStatement = "select * from books";//This is where I'm running into trouble
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
// Loop through the results and add them to the feeds array
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
// Read the data from the result row
NSString *aChapter = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSString *aSection = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
// Create a new text object with the data from the database
Text *text = [[Text alloc] initWithChapter:aChapter Section:aSection];
// Add the text object to the text Array
[textAr addObject:text];
[text release];
}
}
// Release the compiled statement from memory
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
Помимо переключения имен некоторых переменных, я не изменил ни одной части этого кода, за исключением того места, которое я упомянул, вероятно, вызывает некоторые проблемы. Я изменил выражение «выбрать * из животных» на «выбрать * из книг», где животные - это имя старой таблицы, а книги - это имя таблицы в новой БД, которую я хотел бы использовать. Я думал, что это не будет слишком большой сделкой, но, видимо, это так. Я признаю, что это не очень аккуратный вопрос, но если есть кто-нибудь, кто мог бы помочь мне через эту стену, с которой я сталкиваюсь, это было бы очень ценно. Спасибо !!!