2014-09-25 48 views
4

目前,我想要寫在迅速的一點點的iOS應用程序,在那裏我有這些類: masterTableViewControlleraddViewControllerdeleteViewController,他們每個人都連接到一個,好像是這個名字已經告訴,的viewController。雨燕「使用未聲明的類型爲」

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 

    if(segue.identifier == "showDetails") { 
    var selectedIndexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()! 

    var deleteViewController:deleteViewController = segue!.destinationViewController as deleteViewController 

    deleteViewController.todoData = todoItems.objectAtIndex(selectedIndexPath.row) as NSDictionary 
} 

我想當前行的數據發送到下,由賽格瑞引用控制器:masterTableViewController應該使用預定義的函數發送了一些數據。

這是我得到一個錯誤消息,指出deleteViewController不是可以分配給變量的類型。

但我並不真正瞭解現在的問題。基本上這應該工作,因爲我只是想創建一個我的類的類型的新對象,並將其傳遞給我的視圖控制器。

在參考中,我從一切正常工作得到了這段代碼。

回答

6

您正在混合類名稱和實例變量名稱。類名應該是大寫:MasterTableViewController,AddViewController,DeleteViewController

起初,嘗試類名和實例變量名稱來區分,通過選擇不同的名稱,即:

var dvc:deleteViewController = segue!.destinationViewController as deleteViewController 
dvc.todoData = ... 

,看看它是否作品

2

另一種情況下,您可能會神祕'使用未聲明的類型':類型(此處爲DeleteViewController類)在通過更改'實用程序'窗格的'名稱'文本框重命名的文件中定義。然後,儘管「實用工具」窗格的「目標成員」部分中的複選框顯示該文件是項目目標的成員,但Xcode MIGHT可能不會認爲該文件是目標成員。解決方法是取消選中並重新檢查使文件成爲目標成員的複選框。 Xcode將重新編制項目文件,並希望現在將該文件視爲目標成員。

0

我意識到你已經有了一個可以接受的答案,但是我一直在追逐這個錯誤太久,最終找到了我的問題的原因,所以也許它會幫助別人保持他們的理智。

我在嘗試集成Google admob sdk時遇到此問題。

下面是我調試的步驟:

  1. 增加了「進口GoogleMobileAds」的視圖控制器的頂部。
  2. 添加了使用CocoaPods的框架,試着再次手動添加它。
  3. 檢查構建設置中的標題搜索路徑以及框架搜索路徑。驗證路徑實際上指向我想添加的框架。
  4. 檢查框架是否包含在我嘗試構建的目標中。
  5. 已清理並嘗試運行,重新啓動並嘗試運行。
  6. 重訪的構建設置,注意到的框架搜索路徑有一個帶連字符「 - 」的路徑(my_base_dir/my_project_dir/Pods/Google-Mobile-Ads-SDK/Frameworks)。我以前有連字符問題,所以我改變了連字符以強調「_」,突然Xcode解決了「未聲明類型」錯誤。

顯然,Xcode不喜歡框架搜索路徑中的連字符。

0

如果正在編譯的類包含在單元測試模塊中,但未定義的類不包含,則會發生這種情況。

您會發現應用程序編譯並運行,但編譯錯誤可能會顯示在源代碼中。

打開右側欄並檢查目標成員設置。他們應該對這兩個班級保持一致。