2013-11-24 4 views
0

구문 분석 데이터베이스에서 Geolocation을 읽고지도의 다른 사용자의 위치를 ​​표시하고 싶습니다.목표 C - Parse.com Geolocation 저장 및 읽기 IOS

나는 구문 분석 데이터베이스에 위치 쓰기 :

[PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) { 
    if (!error) { 




     [[PFUser currentUser] setObject:geoPoint forKey:@"currentLocation"]; 
     [[PFUser currentUser] saveInBackground]; 

을 그리고 난은 사용자 이름과 위치

 PFQuery *User = [PFUser query]; 
    [User selectKeys:@[@"username"]]; 
    [User findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) { 


     Name = results; 


       }]; 

    PFQuery *Location = [PFUser query]; 
    [Location selectKeys:@[@"currentLocation",]]; 
    [Location findObjectsInBackgroundWithBlock:^(NSArray *location, NSError *error) 
    { 


     Coordinaten = location; 

}]; 




    NSLog(@" %@ hat die %@",Name , Coordinaten); 
    // ann.title = [Name objectAtIndex:1] ; 
    // ann.coordinate = [[Coordinaten objectAtIndex:1] coordinate]; 
    // [MapView addAnnotation:ann]; 

첫 번째 문제는 NSLog 쇼 아무것도를 참조하십시오. NSLogCoordinaten = Location 아래에 복사하면 Coordinaten 값만 표시됩니다. Name = results 아래의 이름.

Coordinaten가/이름이

다음 일이다 .H에서 감속 NSArray, 내가 제목을 설정하고 이러한 NSArrays

// ann.title = [Name objectAtIndex:1] ; 
    // ann.coordinate = [[Coordinaten objectAtIndex:1] coordinate]; 
    // [MapView addAnnotation:ann]; 

감사와 협력하는 방법!

답변

6

이것은 비동기 프로그래밍의 성격을 이해하지 못하는 또 다른 경우입니다.

이 상황을 고려하십시오.

계란 샌드위치를 ​​만들고 싶습니다. 달걀을 끓여 놓고 조리 한 후 껍질을 벗기고 자르고 샌드위치에 넣을 때 경보를 울립니다. 기다리는 동안 빵과 버터를 얻은 다음 경보기가 울릴 때까지 기다리십시오.

findObjectsInBackgroundWithBlock으로 전화하면 계란이 끓게됩니다. 당신이 그것을 통과하는 블록은 경보이며 한 번 요리 된 계란으로 무엇을 할 계획입니까.

위의 코드는 달걀을 끓여서 버리는 것과 비슷하지만 곧바로 생크림/부분적으로 조리 된 달걀을 샌드위치에 사용하려고합니다. 그때까지는 충분히 익혔거나하지 않을 수도 있습니다. 보통 그것은 큰 혼란을 만듭니다.

하나의 해결 방법은 블록 끝에 메서드를 전달하는 것입니다.

+1

정말 멋진 답변이며 왜 더 많은 관심을받지 않았는지 궁금합니다. 이것은 비동기 프로그래밍에 대한 좋은 예입니다. – iCaramba