Массив является нулевым.Перемещение из NSObject в AppDelegate - PullRequest
0 голосов
/ 10 июля 2011

Опять же, Xcode newb здесь ... Так что у меня возникли проблемы с получением моих Предметов (код не показан, но почти идентичен запросу List) и массивов List для отображения любых данных или даже количества. В файле реализации Dbase я могу распечатать массив ... но в UWLAppDelegate я ничего не получаю. Я видел примеры этой проблемы здесь, но они, кажется, не решают проблему. К вашему сведению, я использую Preview Xcode также. Так что некоторые вещи могут выглядеть неправильно.

Я попытался выполнить инициализацию, как описано здесь и в руководстве:

    NSMutableArray *tempArray = [[NSMutableArray alloc] init];
self.listArray = tempArray;

... но по-прежнему нет кубиков.

UWLAppDelegate.m  

- (void)applicationDidFinishLaunching:(UIApplication *)application {
[self copyDatabase];

self.itemArray = [NSMutableArray array];
self.listArray = [NSMutableArray array];

NSLog(@"Items Array: %@",self.itemArray);
NSLog(@"List Array: %@",self.listArray);

[Dbase getDisplayData:[self getDBPath]];
[Dbase getListDisplayData:[self getDBPath]];
}

..

dbase.m

+ (void) getListDisplayData:(NSString *)dbPath {
UWLAppDelegate *appDelegate = (UWLAppDelegate *)[[UIApplication sharedApplication] delegate];
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK){
    const char *sql = "select id, name from lists";
    sqlite3_stmt *selectstmt;
    if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK){
        while(sqlite3_step(selectstmt) == SQLITE_ROW){
            NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
            Dbase *listObj = [[Dbase alloc] initWithPrimaryKey:primaryKey];
            listObj.dblistname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];

            listObj.isDirty = NO;

            [appDelegate.listArray addObject:listObj.dblistname];
        }
        //NSLog(@"%@",appDelegate.listArray);
        //NSLog(@"%d", [appDelegate.listArray count]);
    }
} else {
    sqlite3_close(database);
}
}

Таким образом, комментарии NSLog будут публиковать данные всех 6 строк / строк, которые я сделал из приложения. Идеи?

Массив appDelegate в Objective-C <- тоже не помог. Я смотрел на другие подобные вопросы безрезультатно. Идеи? </p>

1 Ответ

0 голосов
/ 10 июля 2011

Честно говоря, проблем нет. Кажется, это проблема печати в неправильном порядке. У вас есть NSLog s до сбора данных. Похоже, именно поэтому массивы в методе делегата приложения пусты, когда они печатают в методах Dbase.

Разве это не должно быть?

self.itemArray = [NSMutableArray array];
self.listArray = [NSMutableArray array];

[Dbase getDisplayData:[self getDBPath]];
[Dbase getListDisplayData:[self getDBPath]];

NSLog(@"Items Array: %@",self.itemArray);
NSLog(@"List Array: %@",self.listArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...