2013-03-16 55 views
-2

所以我是新來obj-C和Xcode。'NSMutableArray'沒有明顯的@interface聲明選擇器'UTF8String'

我做我的第一個小的應用程序,我也跟着上interwebs一些教程,並設法使該數據庫的連接,但現在我有一個錯誤

無可見@interface爲「NSMutableArray的」聲明選擇 「UTF8字符串」

這似乎在代碼:const char *dbpath = [databasePath UTF8String];

此代碼是在另一個項目中,我做的工作,但是當我試圖在我的d使用它efinitif項目,我得到的錯誤。 錯誤是由於我使用故事板而引起的嗎?

+1

問題是'databasePath'被聲明爲NSMutableArray,而不是NSString。問題是,爲什麼? – 2013-03-16 14:37:47

+2

除了此錯誤,將字符串轉換爲文件系統特定表示的正確方法是'fileSystemRepresentation',而不是'UTF8String'。 – 2013-03-16 14:54:48

+0

@ RichardJ.RossIII說,我將databasePath的聲明更改爲NSString,現在它正在工作。由於某種原因,我設法使它作爲一個NSMutableArray工作,但不知道如何或爲什麼:P(謝謝btw :)) – Michael 2013-03-16 15:26:26

回答

1

const char *dbpath = [databasePath UTF8String];

databasePath不是NSString這是一個NSArray

您可以通過登錄databasePath檢查。如果你想從中提取一些字符串,你可以使用databasePath[index][databasePath objectAtIndex:index]

+0

假設它實際上是一個數組,並且提問者沒有將字符串放入該變量中。 – 2013-03-16 17:49:32

+0

@PeterHosey:錯誤在這一行中說'沒有可見的@interface'NSMutableArray'聲明選擇器'UTF8String'' – 2013-03-16 17:51:25

+0

是的,這是問題標題。這是無關緊要的:它只告訴你變量的類型,而不是提問者投入它的對象的類型。如果變量被作爲某種數組類型輸入,那麼數組訪問將通過編譯器,但如果變量中的對象實際上不是數組,那麼任何數組訪問都會在運行時導致崩潰。 – 2013-03-16 18:08:31

相關問題