2011-10-22 23 views
13

Tôi thực sự không hiểu những gì đang xảy ra ở đây.NSData isEqualtoData

Tôi có một hàm nhận được 3 byte đầu tiên từ đối tượng NSData, receiveStream và đặt chúng vào đối tượng NSData khác, temp, thông qua mảng char. Sau đó so sánh với đối tượng NSData được tạo từ một bộ đệm mảng char. Cả hai đối tượng NSData mới đều được tạo và có nội dung chính xác. Tuy nhiên, khi isEqualtoData được gọi, tôi nhận được một lỗi:

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

Tôi cũng nhận được cảnh báo

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

mà tôi không hiểu vì nó là rõ ràng rằng đây là một phương pháp hợp lệ trong tài liệu. Tôi có cần khai báo NSData.h ở đâu đó không?

-(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

Chỉ cần chỉnh sửa bài đăng, người đàn ông. Tôi đã thực hiện một bản sao và dán mã của bạn và đã cho tôi 10 phút để tìm ra những gì đã sai xD – falkon21

Trả lời

29

Phương pháp này được gọi là isEqualToData:. Lưu ý vốn T - Mục tiêu-C phân biệt chữ hoa chữ thường, như hầu hết các ngôn ngữ lập trình.

+0

Tôi biết nó sẽ là một cái gì đó ngu ngốc như thế. Cảm ơn. Điều đó sẽ dạy tôi sao chép phương pháp ngay từ tài liệu. –

+8

Hoặc sử dụng tự động hoàn tất. :) – Ciryon