我正在读取数据库中的文件路径&将它们添加到我的委托中定义的数组(& alloc'd/initialised)之前将它们转换为NSURL。问题在于urlArray没有被正确填充。将数据存储在代理中定义的数组中
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char *sql = "select coffeeID, coffeeName from coffee";
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);
Coffee *coffeeObj = [[Coffee alloc] initWithPrimaryKey:primaryKey];
coffeeObj.coffeeName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
coffeeObj.isDirty = NO;
NSString *path = coffeeObj.coffeeName;
NSURL *url = [[NSURL alloc] initFileURLWithPath:soundPath];
[appDelegate.urlArray addObject:url];
[appDelegate.coffeeArray addObject:coffeeObj];
[coffeeObj release];
}
}
}
我尝试访问urlArray发现它是空的
SQLAppDelegate *appDelegate = (SQLAppDelegate *)[[UIApplication sharedApplication] delegate];
NSURL *url0 = [appDelegate.urlArray objectAtIndex:0];
的网址是否正确创建,这只是他们似乎并不像预期的那样加入到urlArray。有任何想法吗?在此先感谢:)
我不认为你明白代表应该如何工作。你不应该直接调用代理属性的方法,而是发送消息让他们按照自己的意愿去做。这可能不是问题,但你打破了标准的可可惯例。 – 2012-02-08 19:48:53
好的,我一直在关注在Sqlite数据库实现中找到的[tutorial](http://www.iphonesdkarticles.com/2008/10/sqlite-tutorial-selecting-data.html)。这就是我发现代码的地方。感谢您的提示 – Octave1 2012-02-08 21:09:01
什么是声音路径,你在哪里定义它?是否有可能你想从路径创建NSUrl而不是声音路径? – AndreasZ 2012-02-08 22:38:19