Проблема при прокрутке табличного представления - PullRequest
0 голосов
/ 13 мая 2011

У меня возникает следующая проблема при прокрутке табличного представления:

NSCFString objectAtIndex:]: unrecognized selector sent to instance

Я создаю NSDictionary tableContents, и когда я прокручиваю его, он освобождается.Это мой код:

- (void)viewDidLoad {

lessonsInGroup1 = [NSMutableArray array];
lessonsInGroup2 = [NSMutableArray array];
lessonsInGroup1 = [self grabRowsInGroup:@"1"];
lessonsInGroup2 = [self grabRowsInGroup:@"2"];

NSDictionary *temp =[[NSDictionary alloc]initWithObjectsAndKeys:lessonsInGroup1,@"General Information",lessonsInGroup2,@"LaTeX Examples", nil];
//[[tableContents alloc] init];
self.tableContents =temp;
[temp release];
NSLog(@"table %@",self.tableContents);
NSLog(@"table with Keys %@",[self.tableContents allKeys]);

self.sortedKeys =[[self.tableContents allKeys] sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"sorted %@",self.sortedKeys);

[lessonsInGroup1 release];
[lessonsInGroup2 release];

//[table reloadData];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;

[super viewDidLoad];

}

- (NSMutableArray *) grabRowsInGroup:(NSString*)GroupID{

NSMutableArray *groupOfLessons; 
groupOfLessons = [[NSMutableArray alloc] init];
char *sqlStatement;
int returnCode;
sqlite3_stmt *statement;
NSString *databaseName;
NSString *databasePath;

// Setup some globals
databaseName = @"TexDatabase.sql";

// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];

// Setup the database object
sqlite3 *database;

// Open the database from the users filessytem
if(sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK) {
    fprintf(stderr, "Error in opening the database. Error: %s",
            sqlite3_errmsg(database));
    sqlite3_close(database);
    return;
}
sqlStatement = sqlite3_mprintf(
                               "SELECT * FROM Lessons WHERE LessonGroup = '%s';", [GroupID UTF8String]);

returnCode =
sqlite3_prepare_v2(database,
                   sqlStatement, strlen(sqlStatement),
                   &statement, NULL);
if(returnCode != SQLITE_OK) {
    fprintf(stderr, "Error in preparation of query. Error: %s",
            sqlite3_errmsg(database));
    sqlite3_close(database);
    return;
}
returnCode = sqlite3_step(statement);
while(returnCode == SQLITE_ROW) {

    NSString *aLessonID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
    NSString *aLessonGroup = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
    NSString *aLessonTopic = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)];
    NSString *aLessonText = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];
    NSString *aLessonCode = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 4)];
    NSString *aLessonPicture = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 5)];

    /*NSLog(aLessonID);
    NSLog(aLessonGroup);
    NSLog(aLessonTopic);
    NSLog(aLessonText);
    NSLog(aLessonCode);
    NSLog(aLessonPicture);*/

    // Create a new busCit object with the data from the database
    Lesson *lesson = [[Lesson alloc] initWithLessonID:aLessonID LessonGroup:aLessonGroup LessonTopic:aLessonTopic LessonText:aLessonText LessonCode:aLessonCode LessonPicture:aLessonPicture];

    [groupOfLessons addObject:lesson];

    returnCode = sqlite3_step(statement);
}
sqlite3_finalize(statement);
sqlite3_free(sqlStatement);

return [groupOfLessons autorelease];

}

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Похоже, вы вызываете objectAtIndex для NSString.Это должен быть какой-то массив

0 голосов
/ 13 мая 2011

Как выглядит ваш @property для tableofContents?

Кроме того, вы столкнетесь с проблемами с

[lessonsInGroup1 release];
[lessonsInGroup2 release];

, поскольку вы автоматически выпускаете их в grabRowsInGroup:

Итак, вам не нужно звонить, отпустите их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...