如何在数组中存储值?

时间:2016-09-07 06:28:54

标签: ios for-loop nsmutablearray

lookupAllForSQL 是一个数据库函数。 表名和标识符是动态的。

for (int i=0; i<FavIdent.count; i++)
{
    NSString *strfavarry = [NSString stringWithFormat:@"SELECT  Title FROM %@ WHERE identifire='%@'",[FavTablename objectAtIndex:i],[FavIdent objectAtIndex:i]];
    FavTitle = [FavData lookupAllForSQL:strfavarry];

}

FavTitle应仅保留找到的最后一行,但我想要所有指示的列。

2 个答案:

答案 0 :(得分:1)

lookupAllForSQL正在返回一个数组,因此您在FavTitle中存储的值(应该是favTitle - 变量以常规小写字母开头)每次都被替换,导致循环退出后留下最后一个值。

您需要使用NSMutableArray并在每次循环时附加子数组:

NSMutableArray *tempArray = [NSMutableArray new];
for (int i=0; i<FavIdent.count; i++)
{
    NSString *strfavarry = [NSString stringWithFormat:@"SELECT  Title FROM %@ WHERE identifire='%@'",[FavTablename objectAtIndex:i],[FavIdent objectAtIndex:i]];
    [tempArray addObjectsFromArray:[FavData lookupAllForSQL:strfavarry]];
}
favTitle = [tempArray copy];   // Convert it back to an NSArray

您还应该使用准备好的SQL语句而不是字符串插值来防止SQL注入。

答案 1 :(得分:0)

在您当前的代码中,您 for循环 [FavData lookupAllForSQL:strfavarry] 的结果数组分配 FavTitle 即可。因此,当执行for循环时, FavTitle 必须始终包含最后一个结果数组。

使用下面的代码

NSArray *result = [FavData lookupAllForSQL:strfavarry];
if(result){
[FavTitle addObject:[result objectAtIndex:0]];
}