再次,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< - 也没有帮助。我看了其他类似的问题但没有用。想法?
答案 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);