2011-10-22 24 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