2

したがって、次のコードを含むPersonDoc.hファイルがあります。

#import <Foundation/Foundation.h>

@class PersonData;

@interface PersonDoc : NSObject

@property (strong) PersonData *data;
@property (strong) UIImage *thumbImage;

- (id)initWithTitle:(NSString*)name gift:(NSString*)gift thumbImage:(UIImage *)thumbImage;

ただし、PersonDoc.mファイルには、実装が不完全であることを示す警告記号が表示され続けます。.mコードは次のとおりです。

 #import "PersonDoc.h"
 #import "PersonData.h"

 @implementation PersonDoc

 @synthesize data = _data;
 @synthesize thumbImage = _thumbImage;


- (id)initWithTitle:(NSString*)title gift:(NSString *)gift thumbImage:(UIImage    *)thumbImage fullImage:(UIImage *)fullImage {
if ((self = [super init])) {
    self.data = [[PersonData alloc] initWithTitle:title gift:gift];
    self.thumbImage = thumbImage;
}
return self;
}
@end

PersonData.hコード:#import

@interface PersonData : NSObject

@property (strong) NSString *name;
@property (assign) NSString *gift;

- (id)initWithTitle:(NSString*)name gift:(NSString*)gift;

@end

PersonData.mコード:

#import "PersonData.h"

@implementation PersonData

@synthesize name = _name;
@synthesize gift = _gift;

- (id)initWithTitle:(NSString*)name gift:(NSString*)gift {
    if ((self = [super init])) {
        self.name = name;
        self.gift = gift;
    }
return self;
}
@end

ビューコントローラで、PersonDocタイプのオブジェクトにプロパティ名とギフトが見つからないというエラーが表示されます。次のコードは私のViewControllerにあります:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:           (NSIndexPath *)indexPath
 {
// Configure the cell...
// Create the cell
UITableViewCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier:@"PersonCell"];

if (!cell) {
    cell =  [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"PersonCell"];
}


PersonDoc *person = [self.people objectAtIndex:indexPath.row];
cell.textLabel.text = person.name;
cell.detailTextLabel.text = person.gift;
cell.imageView.image = person.thumbImage;

return cell;
} 

.hファイルのinitWithTitleコードと関係があることはわかっているので、.hファイルと.mファイルの両方に対してinitWithTitleを実行する適切な方法を誰かに教えてもらえますか?ありがとう、私は本当に助けてくれる人に感謝します!

4

1 に答える 1

0

ヘッダーと実装のinitWithTitleは、投稿したコードに応じて異なる署名を持っています。それを修正すると、警告が消えるはずです

于 2012-12-05T21:11:46.900 に答える