AFNetworking を使用してデータを取得し、レールに支えられたサーバーに POST する iPhone アプリを構築しています。すべてが正常に機能していますが、近くの投稿を読み込むために緯度/経度パラメーターを渡そうとしています。私はそれを正しく設定したと確信しています-herokuログはlat/lngで行われたgetリクエストを示しています-しかし、私が抱えている問題はより基本的なものです. 私のindexViewControllerでは、viewDidLoadメソッドで呼び出しようとしています
[self loadPosts]
しかし、その下で loadPosts を定義して fetchNearbyPosts メソッドを呼び出すと、その実装の一部として CLLocation を呼び出す必要があり、宣言されていない識別子エラーが発生するため、問題が発生します。次のように宣言することで修正できます。
loadPosts:(CLLocation *)location {
しかし、viewDidLoad で [self loadPosts:(CLLocation *)location]; を変更すると、その行は、「場所」の宣言されていない識別子エラーを取得します。だから私は輪になって行きます。
私の fetchNearbyPosts メソッドは次のようになります:
+ (void)fetchNearbyPosts:(CLLocation *)location
withBlock:(void (^)(NSArray *posts, NSError *error))completionBlock
{
NSDictionary *parameters = @{
@"lat": @(location.coordinate.latitude),
@"lng": @(location.coordinate.longitude)
};
[[APIClient sharedClient] getPath:@"/posts" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (operation.response.statusCode ==200) {
NSArray *posts = [Post postsWithJSON:responseObject];
completionBlock(posts, nil);
} else {
NSLog(@"Recieved an HTTP %d: %@", operation.response.statusCode, responseObject);
completionBlock(nil, nil);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
completionBlock(nil, error);
NSLog(@"Error: %@", error);
}];
}
そして、私の完全な loadPosts メソッドは次のとおりです。
- (void)loadPosts:(CLLocation *)location {
[Post fetchNearbyPosts:location withBlock:^(NSArray *posts, NSError *error) {
if (posts) {
NSLog(@"Recieved %d posts", posts.count);
self.posts = [NSMutableArray arrayWithArray:posts];
[self.tableView reloadData];
[self.tableView setNeedsLayout];
} else {
[[[UIAlertView alloc] initWithTitle:@"ERROR"
message:@"Couldn't fetch the posts."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
}
}];
}
これはかなり基本的なことだと思いますが、CLLocation を使用して ViewDidLoad で loadPosts を呼び出すにはどうすればよいでしょうか? どんな助けでも大歓迎です。ありがとう