2012-07-12 104 views
0

好的時候,所有我做的是設置一個NSString的值與此代碼:奇怪BAD_EXC_ACCESS聲明一個字符串

NSString *stringURL = [NSString stringWithFormat:@"http://api.themoviedb.org/3/movie/%@/trailers?api_key=1523229ded5824dab8bb7840782db266",searchID]; 

這是一個字符串,然後我變成一個網址查詢TMDB數據庫。這行代碼給了我一個BAD_EXC_ACCESS,它讓我感到很頭痛,因爲使用這種NSString構造是我做了成千上萬次沒有問題的事情。

還有一點需要注意的是,這行是在執行另一個查詢調用之後立即執行的。奇怪的是,該調用使stringURL的方式相同,但它工作正常。

任何幫助,將不勝感激......

+1

如何獲得searchID? – Pfitz 2012-07-12 09:24:32

+0

什麼是searchID?一個屬性?你在哪裏分配和初始化它? – 2012-07-12 09:27:15

+0

它是由數據庫中的較早查詢設置的數字。它是一個讀寫NSInteger屬性。我可以用相同的方法記住searchID的值而不會出現問題,所以我不認爲它是 – Jomnipotent17 2012-07-12 09:28:08

回答

3

您需要使用%i來記錄一個NSInteger,而不是%@

+0

哈哈是的,這是問題。我怎麼沒有看到... – Jomnipotent17 2012-07-12 09:32:03

+0

有多麼尷尬 – Jomnipotent17 2012-07-12 09:33:07

+0

這是這個傢伙強調的一種方式,如果你有一些基本的C知識,它可以帶給你多長時間;) – 2012-07-12 09:57:53

0

您需要使用以下 的NSString * stringURL = [的NSString stringWithFormat:@ 「http://api.themoviedb.org/3/movie/%d/trailers?api_key=1523229ded5824dab8bb7840782db266",searchID];

因爲searchID有NSInteger的類型,您正在使用「%@」

+0

是啊我從上面的回答中修復了它。 – Jomnipotent17 2012-07-12 09:55:41

0

如果它是一個NSInteger你需要使用%LD,否則你會得到一個警告,你也可以使用%d並明確投到int通過(int)searchID

+0

實際上,如果我正在做OS X編程,xcode只會給我那個警告。使用ios,它永遠不會警告NSInteger與int,至少不會與我的XCode版本有關。 – Jomnipotent17 2012-07-13 02:44:29

+0

是的,但我爲OS X和iOS使用了一些共享單元,所以即使當我爲iOS編寫時,我也會將%ld放在OS X上,以免得到警告...... – Shebuka 2012-07-13 08:12:52

+0

我明白了。這就說得通了。非常感謝您的意見。我從一開始就知道這段代碼有一個愚蠢的錯誤,我完全錯過了它。像往常一樣贏得StackOverflow:D – Jomnipotent17 2012-07-13 11:18:51