2013-08-02 96 views
0

我正在構建一個iphone應用程序,顯示錶視圖中的帖子。每篇文章都標有用戶當前位置,我正努力在詳細文本標籤中顯示。 post模型包括這些屬性顯示詳細位置TextLabel

@property (nonatomic, strong) NSString *content; 
@property (strong) CLLocation *location; 

在索引視圖我將單元配置像這樣:

- (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; 
} 

- (void)configureCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    Post *post = [self.posts objectAtIndex:indexPath.row]; 

    cell.textLabel.numberOfLines = 0; 
    cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    cell.textLabel.text = post.content; 

這正確返回後的內容。 但是,當我嘗試在字幕中包含lat/lng時,它會崩潰。 這會導致系統崩潰,並引發了一個不兼容的指針類型的異常「的NSString從CLLocation」:

cell.detailTextLabel.text = post.location; 

這是有道理的,因爲的.text期待一個字符串,位置在字典中,像這樣初始化:

- (id)initWithDictionary:(NSDictionary *)dictionary { 
    self = [super init]; 
    if (!self) { 
     return nil; 
    } 

    self.content = [dictionary valueForKey:@"content"]; 
    self.location = [[CLLocation alloc] initWithLatitude:[[dictionary nonNullValueForKeyPath:@"lat"] doubleValue] longitude:[[dictionary nonNullValueForKeyPath:@"lng"] doubleValue]]; 

    return self; 
} 

那麼如何返回字幕標籤中的位置? 我也想顯示一個時間戳,並懷疑它是一個類似的解決方案。 在我的崗位模型實現文件我#IMPORT「ISO8601DateFormatter.h」以格式字符串的日期,同樣我:

static NSString * NSStringFromCoordinate(CLLocationCoordinate2D coordinate) { 
    return [ NSString stringWithFormat:@"(%f, %f)", coordinate.latitude, coordinate.longitude]; 
} 

但我不知道如何將所有成一個簡單的detailTextLabel這一點。

任何幫助將不勝感激。

編輯

我做了這個數額的進步: 的緯度和經度顯示integers-但它不是正確的緯度/經度,即它實際上沒有讀取正確的整數。

cell.detailTextLabel.text = [NSString stringWithFormat:@"at (%f, %f)", post.location]; 

lat和顯示LNG是這樣的: 0.00,-1.9 當它應該是: LAT 「:」 37.785834" , 「LNG」:「 - 122.406417。 所以它實際上並沒有讀到「post.location」 這行的結尾,那我怎麼才能讓它顯示正確的數據呢?

回答

0

你有沒有試過這個。

- (void)configureCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
     Post *post = [self.posts objectAtIndex:indexPath.row]; 

     cell.detailTextLabel.text = NSStringFromCoordinate(post.location); 
     //.....more setup code 
    } 
+0

乾杯埃斯克,糾正。 –

+0

引發異常:ARC不允許將int隱式轉換爲NSString。 – grantvansant

+0

你正在試圖使用一個字符串,它期望一個int。它發生在哪條線上? –