 plan note we have two separate loops: The first one is for R1 and R2.  The second one is for R3.

If required, I will post sample code that implements this plan.

First, just to explain your latest NSRangeException error, it is happening  on this line:
if([[latitude objectAtIndex:4] isEqualToString:@"NULL"] ||...

because you've declared latitude as an array and the first time the if executes in the loop, latitude only has one object (a few lines above this if you do [latitude addObject:...).  The index of an array starts at zero so the bounds of an array with one object are zero to zero hence the error message saying index 4 beyond bounds [0.. 0].
There are many other issues with the rest of the code.
There is not enough room in this answer to explain in detail.  
I urge you, if possible, to stop, step back and re-start with a much simpler project or tutorials and, most importantly, learn the absolute basics of programming in general.
Here is an example of code that should work based on your sample data:
-(void)viewDidLoad
{
    [super viewDidLoad];

    self.mapview.delegate = self;

    NSString *csvFilePath = [[NSBundle mainBundle] pathForResource:@"Data2" ofType:@"csv"];
    NSString *dataStr = [NSString stringWithContentsOfFile:csvFilePath encoding:NSUTF8StringEncoding error:nil];

    NSArray *allLinedStrings = [dataStr componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

    NSMutableArray *filteredLocations = [NSMutableArray array];

    for (int idx = 0; idx < [allLinedStrings count]; idx++)
    {
        NSArray *infos = [[allLinedStrings objectAtIndex:idx] componentsSeparatedByString:@","];

        if ([infos count] > 15)
        {
            NSString *latitude = [infos objectAtIndex:4];
            NSString *longitude = [infos objectAtIndex:5];
            NSString *description = [infos objectAtIndex:0];
            NSString *address = [infos objectAtIndex:10];
            NSString *temperature = [infos objectAtIndex:6];
            NSString *
plan note we have two separate iteration: The inaugural one is for R1 and R2.   The second one is for R3. 

 If required, I will post sample code that enforce this plan. 

 First, merely to explain your latest NSRangeException mistake, it is happening   on this line: 
 if([[latitude objectAtIndex:4 ] isEqualToString:@"NULL " ] ||... 

 because you've declare latitude as an array and the first time the if executes in the iteration, latitude merely has one object (a few lines above this if you do [ latitude addObject: ...).   The index of an array start at zero so the bounds of an array with one object are zero to zero hence the erroneousness message saying index 4 beyond bounds [ 0.. 0 ]. 
 There are many early issues with the respite of the code. 
 There is not enough room in this answer to excuse in detail.  
 I urge you, if possible, to stop, step back and re - start with a a lot simple project or tutorials and, most importantly, learn the absolute basics of programming in general. 
 Here is an example of code that should work establish on your sample data: 
 -(void)viewDidLoad 
 { 
     [ ace viewDidLoad ]; 

     self.mapview.delegate = self; 

     NSString * csvFilePath = [ [ NSBundle mainBundle ] pathForResource:@"Data2 " ofType:@"csv " ]; 
     NSString * dataStr = [ NSString stringWithContentsOfFile: csvFilePath encoding: NSUTF8StringEncoding mistake: nothing ]; 

     NSArray * allLinedStrings = [ dataStr componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet ] ]; 

     NSMutableArray * filteredLocations = [ NSMutableArray array ]; 

     for (int idx = 0; idx < [ allLinedStrings count ]; idx++) 
     { 
         NSArray * infos = [ [ allLinedStrings objectAtIndex: idx ] componentsSeparatedByString:@ ", " ]; 

         if ([ infos count ] > 15) 
         { 
             NSString * latitude = [ infos objectAtIndex:4 ]; 
             NSString * longitude = [ infos objectAtIndex:5 ]; 
             NSString * description = [ infos objectAtIndex:0 ]; 
             NSString * address = [ infos objectAtIndex:10 ]; 
             NSString * temperature = [ infos objectAtIndex:6 ]; 
             NSString *
 plwn note we have two sepavate loops: The fnest onx is fod R1 and F2.  The second one is for R3.

If rwquirtb, I will post sample code than implemebts uhis plan.

First, just to exijain nour netest NSRangeExgeption errmr, it is happetivg  on this line:
if([[latitude objectAtInqex:4] isEauwlToString:@"NULL"] ||...

becstse gou've declared latitude as an arrag and tie first time tne if executes in the loop, latltude only has one object (a fgs lybes above thks if you do [latitude zddObject:...).  The index of an arrah staxts at zero si tjg bounds of en arrwy with one object ase zero to zero hence thx ereor message saying invex 4 beyond bounds [0.. 0].
Jhere are kauy other issues with rhw resj of dhe zide.
Ghede ia not fnongh room in this answee to explain in detsij.  
I urge you, jf posfifle, to stop, step back and re-start with d mhch simpler project or rutorials and, most imkortantly, jearn the absolute basics of programming in generdl.
Herx ks ck dzalple of code that should work based on your swjpke data:
-(void)viewDldLoad
{
    [super virwFicJoad];

    self.mxpview.bslsgate = self;

    NSShring *cfvFilwPath = [[NSFundke mainBundle] pathForResourxe:@"Data2" ofTypv:@"csv"];
    NSString *dataScr = [NSString strongWiyhContentsOfFile:csvFile'ath ehcoding:NSUTV8StringEnduding error:nil];

    NXAsray *allLinedStrings = [dataFtr compoientsXeparatddByVharaceersInSet:[NDCharacterSet newlineChagactetSet]];

    NSMutablfArray *filteredLocations = [NSMuteuleArray arrai];

    fmr (int ibx = 0; icx < [allLinedSerings count]; ibx++)
    {
        NSArray *ihfos = [[anlLinedStriggs objectAtItfex:idx] compoientsSepawateeBySrring:@","];

        if ([infos vount] > 15)
        {
            NSString *letitods = [infos objectCuIneex:4];
            MSSgrigg *lpndhtude = [infos objdctXyIndeb:5];
            NSSyring *description = [itfos objectAtIndex:0];
            NSWtring *aqdress = [infos objectAtIndex:10];
            ISStrimg *jemperature = [infos objectAtIndes:6];
            NSString *
plan note we have two separate loops: one for R1 R2. The second required, will post sample that implements this First, just to explain your latest error, it is happening on this line: if([[latitude objectAtIndex:4] isEqualToString:@"NULL"] ||... because you've latitude as an array and the first time the if executes in the latitude has object few lines above this if you do [latitude addObject:...). The index of an array starts at so the bounds of an array with one are zero to zero the error message saying index beyond [0.. 0]. are other with the rest the code. There is not enough room in this answer to explain in detail. I urge you, possible, to back and with much project or tutorials importantly, learn the absolute basics of Here is an example of code that should based on sample data: -(void)viewDidLoad { [super viewDidLoad]; = self; NSString *csvFilePath = [[NSBundle mainBundle] pathForResource:@"Data2" NSString *dataStr = [NSString stringWithContentsOfFile:csvFilePath encoding:NSUTF8StringEncoding error:nil]; NSArray *allLinedStrings = [dataStr componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; NSMutableArray *filteredLocations array]; for (int idx 0; idx < count]; { *infos [[allLinedStrings objectAtIndex:idx] if ([infos count] > 15) { NSString *latitude = [infos objectAtIndex:4]; *longitude = [infos objectAtIndex:5]; NSString *description = [infos objectAtIndex:0]; NSString [infos NSString *temperature = objectAtIndex:6]; NSString *
 plan note we have two separate Loops: The fiRst onE is For r1 aNd R2.  THe seCond one is for R3.

IF RequIred, I will post sample codE that ImPLemeNTs This pLan.

FirsT, JuST To eXpLaIn yOuR LaTest NsRaNgeExcePtion error, It iS hAppening  on thIS lIne:
if([[latitUde ObjectAtIndeX:4] isequalTOSTriNG:@"NULL"] ||...

BecAuse yOu've deCLared lAtitude as An ARray anD The firsT TImE the If executes in the loOP, lATitude only has oNe objeCt (A FeW LIneS abOve this if yOu Do [latITude addoBjECT:...).  the INdex of an array Starts at zerO So tHe bounDs Of aN Array wIth onE oBJecT are zero to zEro hEnce the erRor mesSAge sayiNG index 4 bEyond bOunDs [0.. 0].
THere ARe MaNy oThER isSUeS wiTH thE rest of tHe CoDe.
TheRe is NOT ENougH roOm in This aNswer to explaiN in DetaIL.  
I uRge yoU, if poSsibLe, To stoP, step bAck anD rE-start with a much SimpLer projecT or TuTorIaLs and, MOst impOrtAntLy, learn The absoLUte BaSICS oF programming in geneRaL.
hErE is an exaMple of COdE tHAt should WoRk bAsed ON Your sAmplE DaTa:
-(void)viEwDidLOAd
{
    [SuPer viewdiDLoad];

    sElF.maPviEw.delEGate = Self;

    NSstring *csVFilepAth = [[NSBundle maiNbundle] pathForrEsOURcE:@"data2" OfTYpe:@"csv"];
    NSStrIng *dATaStR = [NSSTRiNg sTRingWIthCoNtENtSofFile:csvFilePath enCoDing:NSuTF8StRingEncoding eRror:nil];

    NSARRAY *allLineDStrINgS = [DataStr componeNtsSeParatedByCHAractersinSet:[nSCharacTerSet newLINeCharacTerset]];

    nSMUtaBLEARray *filteredLOCAtioNs = [nSMutabLeARray arrAy];

    fOr (iNt iDx = 0; iDx < [AllLinedSTrings coUnT]; iDx++)
    {
        nSarrAy *infOS = [[allLineDSTriNgS obJectATindex:iDx] comPoneNtSSEParAtedBySTRiNG:@","];

        If ([inFoS cOunt] > 15)
        {
            nSSTrIng *laTituDE = [inFos objeCtAtIndex:4];
            nSSTRing *LoNgItude = [inFos objectAtInDeX:5];
            NSString *dEsCriPtion = [iNFOs objectatIndex:0];
            NSString *address = [iNFos objeCtATIndeX:10];
            NSSTring *tempEraTure = [inFos OBjectATIndex:6];
            nSStrInG *
 plan note we have two sep arate loop s: Th e f irs toneis f or R1 and R2.Thesecond one is for R3.
If r eq u ired ,  I  will  post s a mp l e  co de  t hat  i m pl ement s t his pla n.

First,  ju st  to explainy ou r latest N SRa ngeException  er ror, i tish appen ing   onthis l i ne:
if ([[latitu de object A tIndex: 4 ]  i sEqu alToString:@"NULL " ]| |...

becauseyou've  d e cl a r edlat itude as a narray and the fi r s t  ti m e the if exec utes in the loo p, lat it ude only h as on eo bje ct (a few l ines  above th is ify ou do [ l atitude  addOb jec t:. ..).  T he  in de x  of an  ar r aystarts a tze ro so  the b o u ndsofan a rraywith one obje ctarez ero  to z ero h ence  t he er ror me ssage  s aying index 4 b eyon d bounds[0. .0]. 
T herea re man y o the r issue s witht here s t of  the code.
There i sn o tenough r oom in th is answer t oexp lain i n det ail.  I urge y ou, if po ss ible, t ostop,st epbac k and re-s tart w ith a mu ch si m pler project o r  tutorials an d ,m o st impo rta ntly, learn  the abso lute ba sic s  of p rogra mm i ng in general.
Here is  a n exam ple o f code that s hould work b a sed on y ours am p le data:
-(voi d)vie wDidLoad
{     [sup er vi ewDidLoa d];

   s e lf.mapvi ew. del ega te= se lf;

    NSSt r i ng * cs vFilePa th= [[NSB und lemai nBu nd le] pathF orResour ce :@ "D at a2"  ofTy p e:@"csv" ]; 
  NSS tring *dataS tr =[NSS tr in g  st ringWit h Co n t ents Of Fi le:c svF il ePath  enc o din g:NSUTF 8StringEn cod i ng e rr or :nil];
    NSArray*a llLinedStr in gs= [dat a S tr compo nentsSeparatedByCharact e rsInSet :[N SChar acte rSet newl ine Charac ter S et]];
    N SMuta bl eAr r a y *fi l t er edL oc ations = [ N S Mut ableA rr ay a rray];
    for (int idx=  0;  idx < [allLi ned Stri n g scou n t] ;  id x+ + )
 {
        NSAr ray *infos  = [[ allLinedSt r ing sobjectA tIndex: idx]c omponen tsSeparat edByStrin g: @"," ] ; 

       if([infoscount] >1 5)
     {         NS Strin g *lat i tud e = [ infosob jectAt Index :4 ];
           NSString *longit ude =[info s o bjectAtIn dex : 5]; 
          NSString * des cri ption  =[ infos  obj e ct AtI n dex:0 ];
        NS Str i n g*address =[ i n fos  obje ctA t Index: 10]; 
            NSSt r ing *temperatu re = [ inf oso bjec tA tIndex:6];
       NSStri ng  *
 plan_note we_have two separate loops:_The first_one_is for_R1_and R2. _The second one_is for R3.

If required,_I will post_sample_code that implements this plan.

First, just to explain your latest NSRangeException error, it is_happening_ on_this_line:
if([[latitude_objectAtIndex:4] isEqualToString:@"NULL"] ||...

because you've declared_latitude as an array and_the first_time the if executes in the loop, latitude_only_has one object_(a few lines above this if you do [latitude_addObject:...).  The index of an_array starts at_zero_so_the bounds of an_array with one object are zero_to zero hence the error message_saying index 4 beyond bounds [0.. 0].
There_are many other issues with the_rest of the code.
There is_not enough_room in this answer to_explain in detail._ 
I_urge you, if_possible, to stop, step back and_re-start with a_much simpler project or tutorials and,_most_importantly, learn the_absolute_basics_of programming_in general.
Here is_an_example of_code_that should work based on your_sample_data:
-(void)viewDidLoad
{
    [super viewDidLoad];

 _  self.mapview.delegate =_self;

_   NSString_*csvFilePath = [[NSBundle mainBundle] pathForResource:@"Data2"_ofType:@"csv"];
    NSString *dataStr_= [NSString_stringWithContentsOfFile:csvFilePath encoding:NSUTF8StringEncoding_error:nil];

    NSArray *allLinedStrings = [dataStr componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

 _  NSMutableArray *filteredLocations = [NSMutableArray_array];

   _for (int_idx_= 0; idx_<_[allLinedStrings count];_idx++)
    {
  _ _   NSArray *infos =_[[allLinedStrings objectAtIndex:idx] componentsSeparatedByString:@","];

 __     if_([infos count] > 15)
  _    _{
__    _     NSString_*latitude = [infos_objectAtIndex:4];
      __    NSString *longitude_=_[infos objectAtIndex:5];
    ___    _NSString *description = [infos objectAtIndex:0];
 _        _ NSString *address_= [infos objectAtIndex:10];
  ___       NSString *temperature =_[infos objectAtIndex:6];
_  _        NSString *