数组为空。从NSObject推送到AppDelegate

时间:2011-07-10 04:08:02

标签: objective-c ios4 xcode4 nsmutablearray

再次,Xcode newb here ...所以我无法获取我的Items(代码未显示但几乎与List查询相同)和List数组以显示任何数据甚至计数。在Dbase实现文件中,我可以打印出数组......但是在UWLAppDelegate中我什么都没得到。我在这里看过这个问题的例子,但似乎没有解决这个问题。仅供参考,我也在使用预览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将发布我从App制作的所有6个entires / row的数据。想法?

Objective-C appDelegate array< - 也没有帮助。我看了其他类似的问题但没有用。想法?

1 个答案:

答案 0 :(得分:0)

坦率地说似乎没有问题。这似乎是一个错误顺序打印的问题。在收集数据之前,您有NSLog个。这似乎是在使用Dbase方法打印时,数组在app delegate方法中为空的原因。

不应该吗?

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);