2010-11-26 7 views
2

Ich habe ein Array, wo ich Daten von der Datenbank für einen bestimmten Wert abholen, und daher der Schlüssel, wo dieser bestimmte Wert nicht da ist, holt NULL-Wert im Array.Wie Null-Wert aus dem Nsarray zu beseitigen?

Nun ist meine Frage, wie kann ich diesen Nullwert aus dem Array beseitigen? Ich habe versucht, den nsarray-Wert zu nsstring und dann zu einem anderen Array zu holen, aber dann holt es nicht das ganze Array, sondern nimmt den letzten indizierten Wert.

Bitte helfen Sie mir. Vielen Dank.

I-Code für weitere Referenz bin Befestigung:

NSString *url = [NSString stringWithFormat:@"webservice from where i m fetching data"]; 
NSLog(url); 
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; 
    [request setHTTPMethod: @"POST"]; 

NSData *returnData = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ]; 
NSString *returnString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding]; 
dataArray=[[returnString JSONValue] retain]; 
[self setAlldetails:dataArray];  

nsarray *InteName = [alldetails valueForKey:@"IntelligenceName"]; 

So das Array holt Wert für Array InteName wie folgt aus:

(
    "00:00:00", 
    "00:00:00", 
    "17:15:00", 
    "17:15:00", 
    "17:15:00", 
    "17:15:00", 
    "00:00:00", 
    "00:00:00", 
    "17:15:00", 
    "17:15:00", 
    "17:15:00", 
    "17:15:00", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<null>", 
    "<null>" 
) 

so jetzt will ich Vorkommen des Wertes Null entfernen.

irgendwelche Schätzungen ??

+1

Geben Sie einen Code, um Ihren Fehler in Ihrem Code zu verfolgen. – Ishu

+0

gefiltertArrayUsingPredicate :. Viel weniger Code als die folgenden Lösungen. –

+0

Auch wäre ich nicht überrascht, wenn es eine bessere Laufzeit als O (n) hat. –

Antwort

6

die Lösung während Got tun T E:

NSMutableArray *array = [[NSMutableArray alloc]init]; 
array = [InteName retain]; 
NSLog(@"Array : : %@",array); 

NSMutableArray *array1 = [[NSMutableArray alloc]init]; 

NSString *str; 
for(int i=0;i<[array count];i++) 
{ 
    str = [array objectAtIndex:i]; 
    if(str !=[NSNull null]) 
    { 
     [array1 addObject:str]; 
     //[array removeObjectAtIndex:i]; 
    } 
} 
+3

Ein Vorschlag: if (! [Str isKindOfClass: [NSNull-Klasse]]) statt if (str! = [NSNull null]). Letzteres gibt eine Warnung aus. – mpemburn

+0

@mpemburn die Identitätsprüfung ist ausreichend und viel schneller auch. Wirf eines der beiden auf "id" und die Warnung sollte weggehen. –

1

nicht sicher, ob ich Ihre Frage richtig lese, aber vorausgesetzt, Sie die Null-Einträge in Ihrem Array loswerden wollen, und dass sie tatsächlich @"<null>" Strings:

NSMutableArray *array = ...; 
for (id nullObject in array) 
{ 
    if ([nullObject isKindOfClass:[NSString class] && [nullObject isEqualToString:@"<null>"] 
    { 
     [array removeObjectAtIndex:i]; 
    } 
} 
+0

Dies wird ausgelöst, wenn Sie das Array ändern, während Sie darüber iterieren. – zoul

+0

Dieser Code wirft auch eine Ausnahme mit der gleichen Fehlermeldung, die oben gezeigt wird, da null mit Nullwert verglichen wird. Was sollte ich tun, um die Dinge zu beseitigen? – Sarah

0
NSMutableArray *nulls = [NSMutableArray array]; 
for (id candidate in dataArray) 
    if (candidate == [NSNull null]) 
     [nulls addObject:candidate]; 
[dataArray removeObjectsInArray:nulls]; // assuming dataArray is mutable 
+0

hey Zoul, Danke für die Hilfe. Ich habe Ihren Code versucht, aber es wird mit folgenden beendet: - [NSNull istEqualToString:]: unerkannter Selektor an Instanz 0x264ad68 gesendet 2010-11-26 15: 05: 50.104 [4275: 207] *** App aufgrund von nicht abgefangenen Ausnahme beenden 'NSInvalidArgumentException', Grund: '- [NSNull istEqualToString:]: nicht erkannter Selektor gesendet an Instanz 0x264ad68' ..... terminiert aufgerufen nach dem Werfen einer Instanz von 'NSException' Programm empfangenes Signal: "SIGABRT". Dies liegt daran, dass es null mit null vergleicht. – Sarah

+0

Versuchen Sie die bearbeitete Version. – zoul

Verwandte Themen