iOS 7 - 本地声明在从数据库查询调用结果时隐藏实例变量

Raz*_*riz 3 objective-c

我有这个函数,它从数据库查询中获取结果.我正在使用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隐藏实例变量的本地声明.我有一种感觉,这是我无法正确添加结果到我的阵列背后的罪魁祸首.谁能指出我做错了什么?谢谢.

bne*_*ely 5

itemName您共享的代码中的使用对我来说是正确的.错误消息表明您的类有一个名为的实例变量itemName,这将使您itemNameNSLogaddObject:案例中使用不明确(作为两个变量,一个在本地范围内,一个在您的类范围内,将共享相同的变量名称) .

通过NSString *itemName在此方法中为变量选择新的唯一名称来解决此问题.