2009-08-18 102 views
0

我正在將數據(從網頁)轉換爲字符串)。基本代碼的作品(但有一些微妙的變化 - 可能在服務器上)。「無效」iphone字符串

NSLog顯示預期的字符串(可能是1000個字符長)。但是,當我浮動在responseString上時,它顯示「無效」。更糟糕的是,使用componentsSeparatedByCharactersInSet解析不起作用。

想法?

NSString *responseString; 
responseString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
NSLog([NSString stringWithFormat:@"responsestring ='%@'",responseString]); 
if ([responseString compare:@""] != NSOrderedSame) { 
    lines = [responseString componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@";"]]; 
+0

只需注意您可以使用equalsTo:而不是compare:來比較字符串。那麼你不必將它等同於NSOrderedSame。 – rein 2009-08-18 14:31:53

+0

繮 - 謝謝你的提示。與isEqual一起。 – BankStrong 2009-08-18 15:57:24

+0

另外,你的NSLog不需要有stringWithFormat的東西。事實上,那會很糟糕。 NSLog(@「responseString ='%@'」,responseString)會做你想做的事情,因爲它自動具有格式。 (之所以不好,是因爲responseString,如果它有%,可能會導致你崩潰,因爲你可能會傳入@「responseString ='一些隨機值,其中有'%'」 – AlBlue 2009-08-18 20:40:31

回答

2

這可能發生在配置設置爲「發佈」而不是「調試」,我認爲。

0

不要相信調試說什麼,這是不準確的,這發生在我身上和我花了一段時間才能認識到Xcode調試並不總是正確的,不應該被信任,所以我不再信任調試器,並且當它試圖告訴我什麼是無效時,我使用nslog語句。所以不要擔心它發生了,當它發生在我身上時,我也在解析某些webservice的響應。

+0

死了。我回去後意識到我將版本設置爲「釋放」,如果調試器無法計算出值,應該提供不同的值,例如「未知 - 使用發佈版本」。 – BankStrong 2009-08-18 13:34:19

0

只是要清楚 - 我在調試器中看到「無效」的經驗意味着引用是一個已經發布的對象。

你的問題和下面的評論似乎表明你認爲「無效」是一個實際的字符串值 - 但你確定你不只是有一個內存管理?