2013-09-27 28 views
0

我在用戶更改文本字段的值以更新數據模型時調用的方法titleFieldValueChanged中出現此錯誤。錯誤:在'id'類型的對象上未找到屬性「數據」

在DetailViewController.m:

- (IBAction)titleFieldTextChanged:(id)sender 
{ 
    self.detailItem.data.title = self.titleField.text; 
} 

我知道我必須在括號符號來寫這個,對不對?但我無法弄清楚如何做到這一點。

+0

什麼類型的對象是detailItem? – Alex

+0

你有沒有看過這個http://stackoverflow.com/questions/8302674/property-not-found-on-object-of-type-id – DogCoffee

+0

@Smick是的,但仍然困惑,因爲我是新客觀的C – pjv

回答

0

支架符號看起來是這樣的:

[[[self detailItem] data] setTitle:[[self titleField] text]]; 

實際的錯誤更像是一種錯誤的聲音雖然。 detailItem的類型實際上並不具有數據屬性,或者它不明顯是什麼類的detailItem。

+0

使用該行代碼現在出現錯誤:'NSData'沒有可見的@interface聲明選擇器'setTitle'。 – pjv

+0

detailItem屬性應該是什麼類型?你得到的錯誤說明detailItem.data是NSData類型的,這顯然是不正確的,因爲NSData沒有title屬性。 – Kamaros

+0

它應該是類型id。如果我把這行代碼寫成self.detailItem.data.title = self.titleField.text,那麼錯誤就是在'id'類型的對象上沒有找到'Property'data' – pjv

0

看你的代碼,在你繼續之前(我稍微改變它 - 做同樣的事情)。當您嘗試從主控切換到詳細時,您發送的代碼崩潰。這些是我發現的更大的問題。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) { 
     DetailViewController *dvc = segue.destinationViewController; 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     NSDate *object = _exercises[indexPath.row]; 
     dvc.detailItem = object; 
    } 
} 

// in detail view 
@property (strong, nonatomic) NSDate *detailItem; 

你的「對象」要傳遞到詳細信息視圖控制器是的NSDate對象。

您不能將標題設置爲NSDate對象。

你也有一個問題,當你做

[[self detailItem] setFullImage:fullImage]; 
[[self detailItem] setThumbImage:thumbImage]; 

您再次嘗試圖像設置爲您的NSDate對象。

我建議你按照本教程進行操作,它會顯示你正在嘗試製作的一個很好的例子,正如你所提到的你是初學者。

iOS Tutorial: How To Create A Simple iPhone App

+0

謝謝@Smick這就是我會做的 – pjv

相關問題