我有这个函数,它从数据库查询中获取结果.我正在使用FMDB库来查询数据库.但是,我感觉我没有正确地将查询结果传输到我的可变数组.这是我的功夫
-(NSArray *)initializeGroupIDArray{
// Getting the database path.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *dbPath = [docsPath stringByAppendingPathComponent:@"itemList.db"];
FMDatabase *database = [FMDatabase databaseWithPath:dbPath];
[database open];
NSString *sqlSelectQuery = @"SELECT DISTINCT GROUPID FROM ItemList";
// Query result
FMResultSet *resultsWithNameLocation = [database executeQuery:sqlSelectQuery];
while([resultsWithNameLocation next]) {
NSString *itemName = [NSString stringWithFormat:@"%@",[resultsWithNameLocation stringForColumn:@"GROUPID"]];
// loading your data into the array, dictionaries.
NSLog(@"GroupID = %@", itemName);
[groupArray addObject:itemName];
}
[database close];
NSArray *groupID;
[groupID = groupArray copy];
return groupID;
}
Run Code Online (Sandbox Code Playgroud)
在行处出现警告,NSLog(@"GroupID = %@", itemName);并[groupArray addObject:itemName];在其处显示itemName隐藏实例变量的本地声明.我有一种感觉,这是我无法正确添加结果到我的阵列背后的罪魁祸首.谁能指出我做错了什么?谢谢.
itemName您共享的代码中的使用对我来说是正确的.错误消息表明您的类有一个名为的实例变量itemName,这将使您itemName在NSLog和addObject:案例中使用不明确(作为两个变量,一个在本地范围内,一个在您的类范围内,将共享相同的变量名称) .
通过NSString *itemName在此方法中为变量选择新的唯一名称来解决此问题.