2016-09-07 2 views
-1

lookupAllForSQL ist eine Datenbankfunktion. Der Tabellenname und die ID sind dynamisch.Wie wird der Wert im Array gespeichert?

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 sollte nur die letzte gefundene Zeile behalten, aber ich möchte alle angegebenen Spalten.

+0

warum - Stimmen können Sie bitte exaplain? – seggy

+0

Fügen Sie Ihre LookupAllForSQL-Methode hinzu. –

+0

Was ist der Typ der FavTitle-Variable? – Anuj

Antwort

1

lookupAllForSQL ein Array zurückkehrt, so dass der Wert speichern Sie in FavTitle (die favTitle sein sollte - Variablen mit einem Kleinbuchstaben durch Konvention beginnen) wird jedes Mal ersetzt werden, was in dem letzten Wert, der übrig ist, nachdem die Schleife beendet wurde.

Sie benötigen ein NSMutableArray und fügen Sie den Sub-Array jedes Mal durch die Schleife verwenden:

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 

Sie sollten auch bereit, SQL-Anweisungen verwenden, anstatt String Interpolation vor SQL-Injection zu schützen.

+0

es funktioniert Danke @ Paulw11 – seggy

0

In Ihrem aktuellen Code sind Sie das Ergebnis Array von Zuordnung [FavData lookupAllForSQL: strfavarry] zu FavTitle im for-Schleife. Also FavTitle muss immer letzten Ergebnis-Array darin haben, wenn die for-Schleife ausgeführt.

Verwendung unter Code

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