投稿のフィードを読み込む iOS アプリがあります。テーブル セルのテキスト ラベルには、post.content が表示されます。post.location とタイムスタンプを表示するように detailTextLabel を取得しようとしています。タイムスタンプは機能しますが、場所は座標 (0.000, 0.000) を返します。これがコードです
- (void)configureCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
Post *post = [self.posts objectAtIndex:indexPath.row];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.textLabel.text = post.content;
cell.detailTextLabel.textColor=[UIColor lightGrayColor];
cell.detailTextLabel.font = [UIFont boldSystemFontOfSize:9];
cell.detailTextLabel.text = [NSString stringWithFormat:@"posted on %@ at (%f, %f)", post.timestamp, (post.location.coordinate.latitude, post.location.coordinate.longitude)];
}
タイムスタンプは正しく、座標は正しくありません。投稿モデルには CLLocation プロパティがあります。そして私は宣言します:
static NSString * NSStringFromCoordinate(CLLocationCoordinate2D coordinate) {
return [ NSString stringWithFormat:@"(%f, %f)", coordinate.latitude, coordinate.longitude];
}
次のように近くの投稿を取得します。
+ (void)fetchNearbyPosts:(CLLocation *)location
withBlock:(void (^)(NSArray *posts, NSError *error))completionBlock
{
NSDictionary *parameters = @{
@"lat": @(location.coordinate.latitude),
@"lng": @(location.coordinate.longitude)
};
そして、このロケーション ディクショナリを使用して JSON から更新します
NSDictionary *locationDictionary = [dictionary objectForKey:@"location"];
self.location = [[CLLocation alloc] initWithLatitude:[[locationDictionary valueForKey:@"lat"] doubleValue] longitude:[[locationDictionary valueForKey:@"lng"] doubleValue]];
これらすべての間に - detailTextLabel が適切な座標を表示するのを妨げているのは何ですか? それはdetailTextLabelコードの何かだと思います-適切な座標名を呼び出していないので、ゼロを返しています-実際、post.location.coordinateセクション全体を削除すると、ラベルはまったく同じものを返します. 場所を表現するためにいくつかの異なる方法を試しましたが、ほとんどの代替方法では例外が発生しますが、これはうまくいくはずですか? 何か案は?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
[self configureCell:cell forRowAtIndexPath:indexPath];
return cell;
}
そして、これが実際の JSOn です。私のマッピングに奇妙な点がある場合に備えて..
[{"content":"Test","postid":1,"lat":"34.13327300486596","lng":"-118.1054221597022", "created_at":"2013-08-06T14:59:42Z"}]