0

アプリで非常に奇妙な問題が発生しています。サーバーからデータを収集しているセクションがあります。それに応じて、近くのすべてのレストランの緯度と経度を取得しています。これらの緯度と経度を使用して、現在のユーザーの場所からのそれぞれの距離、および収集されたデータの現在のユーザーの場所からさらに離れたクローゼットのような並べ替えを適用しましたが、私の側ではすべて正常に機能しますが、クライアントが自分の側でこれをテストするたびに、並べ替えは機能しません.このコードをここに添付しました。

- (void)viewDidLoad
{
    [super viewDidLoad];

    myDelegate= (AppDelegate *)[[UIApplication sharedApplication] delegate];

    NSLog(@"Lat %f", [[myDelegate.myLocation objectForKey:@"LATITUDE"]floatValue]);
    NSLog(@"Long %f",[[myDelegate.myLocation objectForKey:@"LONGITUDE"]floatValue]);

    self.coordArray= [[NSMutableArray alloc]init];
    // Do any additional setup after loading the view from its nib.


    timer=[NSTimer scheduledTimerWithTimeInterval:(10.0) target:self selector:@selector(upateLocation) userInfo:nil repeats:YES];

    float dist;

    for (int i=0; i<[myDelegate.placeArray count]; i++) {

        dist=(6371 * acos(cos(RADIANS_TO_DEGREES([[myDelegate.myLocation objectForKey:@"LATITUDE"]floatValue]) ) *
                                     cos(RADIANS_TO_DEGREES([[[myDelegate.placeArray objectAtIndex:i] latitude] floatValue] ) ) * cos( RADIANS_TO_DEGREES([[[myDelegate.placeArray objectAtIndex:i] longitude] floatValue] ) - RADIANS_TO_DEGREES([[myDelegate.myLocation objectForKey:@"LONGITUDE"]floatValue]) ) + sin( RADIANS_TO_DEGREES([[myDelegate.myLocation objectForKey:@"LATITUDE"]floatValue])) * sin( RADIANS_TO_DEGREES([[[myDelegate.placeArray objectAtIndex:i] latitude] floatValue] ) ) ) );

        //int distVal=(int)dist;
        distStr= [NSString stringWithFormat:@"%.2f",dist];
        NSLog(@"new---%@",distStr);
        [self.coordArray addObject:distStr];
    }
    NSMutableDictionary *tmpDict;

    for (int i=0; i<[myDelegate.placeArray count]; i++) {

        tmpDict = [[NSMutableDictionary alloc]initWithObjectsAndKeys:[[myDelegate.placeArray objectAtIndex:i] ids],@"contentId",[[myDelegate.placeArray objectAtIndex:i] restaurantname],@"contentTitle",//contentAdd
                   [[myDelegate.placeArray objectAtIndex:i] res_type],@"contentType",
                   [[myDelegate.placeArray objectAtIndex:i] user_image],@"contentImg",[[myDelegate.placeArray objectAtIndex:i] address],@"contentAdd",[[myDelegate.placeArray objectAtIndex:i] phone],@"contentPhone",
                   [self.coordArray objectAtIndex:i],@"contentDist",nil];

        [self.dataArray addObject:tmpDict];
        [tmpDict release];
        tmpDict = nil;


        //  NSLog(@"self.dataArray---%f",[[[self.dataArray objectAtIndex:i] valueForKey:@"contentDist"] floatValue]);
    }

    NSMutableArray *tempArray = [[NSMutableArray alloc] init];
    [tempArray removeAllObjects];
    [tempArray addObjectsFromArray: self.dataArray];

    NSString *key = @"contentDist";
    NSSortDescriptor *brandDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:YES];
    NSArray *sortDescriptors = [NSArray arrayWithObjects:brandDescriptor,nil];
    NSArray *sortedArray = [tempArray sortedArrayUsingDescriptors:sortDescriptors];
    [brandDescriptor release];
    [tempArray removeAllObjects];
    tempArray = (NSMutableArray*)sortedArray;
    [self.dataArray removeAllObjects];
    [self.dataArray addObjectsFromArray:tempArray];

    /*haversine=[[Haversine alloc] init];
     [haversine initWithLat1:28.618095 lon1:77.390228 lat2:28.635860 lon2:77.506226];
     [haversine toKilometers];
     NSLog(@"haversine--- %f",[haversine toKilometers]);*/
//    [self performSelector:@selector(upateLocation) withObject:nil afterDelay:10.0];


    }

}

上記コードの解説です。1-各レストランに対応するすべての緯度と経度を持つ配列 (配列を配置) を持っています。2-この配列から、Harvest メソッドを使用して距離を km 単位で取得し、これらを (coordArray) という名前の別の配列に追加します。3-次に、最終的な配列を作成します(並べ替えを適用したdataArray

これは私の最後では問題なく動作しますが、iPhone 5 でテストすると動作しません。

これから私を助けてください。あなたの貴重な時間を割いてくれてありがとう。

4

2 に答える 2