2011-10-22 49 views
13

我真的不明白這裏發生了什麼。NSData isEqualtoData

我有一個函數從一個NSData對象receivedStream獲取前三個字節,並通過一個char數組將它們放入另一個NSData對象temp。然後將它與從char數組緩衝區創建的NSData對象進行比較。這兩個新的NSData對象都被創建並且具有正確的內容。然而,當isEqualtoData被調用時,我得到一個錯誤:

[NSConcreteData isEqualtoData:]: unrecognized selector sent to instance (instance refers to tmp2)

我也得到警告

Instance method '-isEqualtoData:' not found (return type defaults to 'id')

我不明白,因爲很顯然,這是在文檔的有效方法。我需要在某處聲明NSData.h嗎?

-(BOOL)checkHeader{ 
    char tmp[3]; 
    [receivedStream getBytes:&tmp length:3]; 
    NSData *temp = [NSData dataWithBytes:tmp length:3]; 
    NSData *tmp2 = [NSData dataWithBytes:header length:3]; 
    BOOL test = [tmp2 isEqualtoData:temp]; 
    return test; 
} 
+0

只需編輯帖子,男人。我做了一段代碼的複製和粘貼,花了10分鐘找出錯誤的地方xD – falkon21

回答

29

該方法被稱爲isEqualToData:。注意大寫T - Objective-C與大多數編程語言是區分大小寫的。

+0

我知道這會是一件愚蠢的事情。謝謝。這會教會我直接從文檔複製該方法。 –

+8

或使用自動完成。 :) – Ciryon