-2

だから私はparse.comにたくさんのオブジェクトを持っています. クラス名は「MainInfo」で、geoPoint という名前の列にジオ ポイントがあります。

.h ファイルに以下を追加して、ユーザーの場所を取得しています。

@property (nonatomic, strong) PFGeoPoint *userLocation;

次に、viewDidLoad に以下を追加します。

[PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) {
if (!error) {
    self.userLocation = geoPoint;
    [self loadObjects];
}
}];

ローリング queryForTable を実行します。

- (PFQuery *)queryForTable
{
// User's location
PFGeoPoint *userGeoPoint = self.userLocation;
// Create a query for places
PFQuery *query = [PFQuery queryWithClassName:@"MainInfo"];
// Interested in locations near user.
[query whereKey:@"geoPoint" nearGeoPoint:userGeoPoint];
// Limit what could be a lot of points.
query.limit = 10;
// Final list of objects
_placesObjects = [query findObjects];

return query;
}

Xcodeでエラーが発生します*** setObjectForKey: object cannot be nil (key: $nearSphere)

私が見る限り、私は何が間違っているのか分かりません。

私は解析ドキュメントと協力して、ここまでたどり着きました。ここにリンクがあります

4

2 に答える 2

1

ビューが最初にロードされたときに設定される可能性が低いwhereKey:nearGeoPoint:asに nil 値を渡しているため、エラーが発生します。self.userLocation次の 2 つのことを行います。

  1. queryForTableメソッドで、self.userLocationnil かどうかを確認します。そうであれば、nil を返します。これはノーオペレーションとして機能し、テーブルにはまだデータが表示されません。

    - (PFQuery *)queryForTable
    {
        if (!self.userLocation) {
            return nil;
        }
        // User's location
        PFGeoPoint *userGeoPoint = self.userLocation;
        // Create a query for places
        PFQuery *query = [PFQuery queryWithClassName:@"MainInfo"];
        // Interested in locations near user.
        [query whereKey:@"geoPoint" nearGeoPoint:userGeoPoint];
        // Limit what could be a lot of points.
        query.limit = 10;
        // Final list of objects
        _placesObjects = [query findObjects];
    
        return query;
    }
    
  2. geoPointForCurrentLocationInBackground:完了ブロックでは、self.userLocation値が設定されたら、 を呼び出します[self loadObjects]。これによりPFQueryTableViewController、クエリを再度実行するように指示されます。今回はself.userLocationnil ではないため、元のクエリを作成できます。幸いなことに、この手順は既に実行されていますが、他の誰かが同じ質問をする場合に備えて、ここに含めておきます。

于 2013-09-03T15:01:59.777 に答える