2012-04-26 29 views
27

Đang nhận "Thiếu ngữ cảnh cho khai báo phương thức" cho phương pháp mô tả bị ghi đè của tôi. Bạn có thể nói những gì sai với mã?"Thiếu ngữ cảnh cho khai báo phương thức" đối với phương thức mô tả bị ghi đè

#import <Foundation/Foundation.h> 
#import "BNRItem.h" 

int main(int argc, const char * argv[]) 
{ 

    @autoreleasepool { 

     // Create a mutable array object, store its address in items variable 
    NSMutableArray *items = [[NSMutableArray alloc]init]; 

    BNRItem *p = [[BNRItem alloc]init]; 
    NSLog(@"%@ %@ %@ %d", [p itemName], [p dateCreated], [p serialNumber], [p valueInDollars]); 

    // This creates a new NSString, "Red Sofa" and gives it to the BNRItem 
    [p setItemName:@"Red Sofa"]; 

    // This creates a new NSString, "A1B2C" and gives it to the BNRItem 
    [p setSerialNumber:@"A1B2C"]; 

    // We send the value 100 to be used as the valueInDollars of this BNRItem 
    [p setValueInDollars:100]; 

    // Destroy the array pointed to by items 
    items = nil; 

    } 
    return 0; 
} 

-(NSString *)description // Missing context for method declaration 
{ 
    NSString *descriptionString = 
    [[NSString alloc]initWithFormat:@"%@ (%@): Worth $%d, recorded on %@", 
    itemName; 
    serialNumber; 
    valueInDollars; 
    dateCreated]; 

return descriptionString; 

} 

BNRItem.m

#import "BNRItem.h" 

@implementation BNRItem 

-(void)setItemName:(NSString *)str { 
    itemName = str; 
} 

-(NSString *)itemName { 
    return itemName; 
} 

-(void)setSerialNumber:(NSString *)str { 
    serialNumber = str; 
} 

-(NSString *)serialNumber { 
    return serialNumber; 
} 

-(void)setValueInDollars:(int)i { 
    valueInDollars = i; 
} 

-(int)valueInDollars { 
    return valueInDollars; 
} 

-(NSDate *)dateCreated { 
    return dateCreated; 
} 

-(NSString *)description 
{ 
    NSString *descriptionString = 
    [[NSString alloc]initWithFormat:@"%@ (%@): Worth $%d, recorded on %@", 
    itemName, 
    serialNumber; // Expected "]" 
    valueInDollars, // Expression result unused 
    dateCreated]; //Extraneous "]" before ";" 

    return descriptionString; 
} 


@end 
+0

Cảm ơn bạn. Tôi đã chuyển phương thức mô tả sang BNRItem.m, nhưng bây giờ có một tập hợp các vấn đề khác. Đã dán trong BNRItem.m ở trên. – pdenlinger

Trả lời

54

phương pháp bạn có vẻ như được tự do trôi nổi bên main.m. Một phương thức thể hiện cần được đặt bên trong phần thực hiện của một lớp. (giữa @implementation@end).

Tôi đoán là bạn nên chuyển mã đó vào BNRItem.m.

+0

Cảm ơn bạn. Tôi đã chuyển phương thức mô tả sang BNRItem.m, nhưng bây giờ có một tập hợp các vấn đề khác. Đã dán trong BNRItem.m ở trên. – pdenlinger

+0

@pdenlinger: Các lỗi là vì bạn đặt dấu chấm phẩy thay vì dấu hai chấm sau 'số sê-ri'. – Chuck

+0

@Chú ý bạn là dấu chấm phẩy thay vì dấu phẩy, phải không? Mặc dù đã đến muộn ... – jrturton

1

Nếu bạn có thứ gì đó giống như một char lúc bắt đầu rất tuyệt vời của tệp Tiêu đề .m của bạn, thì cũng có khả năng lỗi này được xác nhận.

^// 
// EMServices.m 
// MyController 
// 
// Created by EMart on 09.01.14. 
// Copyright (c) 2014 EMart. All rights reserved. 
// 
Các vấn đề liên quan