0

このエラーが発生しています:

No visible @interface for 'BinaryFileReader' declares the selector 'initWithLocation:'

以下のメソッドの BinaryFileReader で呼び出されるすべてのメソッドに対して。

+ (Item*)loadItem:(NSString*)filepath {
  Item* newItem = [[Item alloc] init];
  BinaryFileReader* input = [[BinaryFileReader alloc] initWithLocation:filepath];
  [newItem setName:[input readNSString]];
  [newItem setOtherNames:[input readNSMutableArrayOfNSString]];
  [newItem setDescription:[input readNSString]];
  [newItem setXactCode:[input readNSString]];
  [newItem setSymbilityCode:[input readNSString]];
  [newItem setAverageLowPrice:[input readInt]];
  [newItem setAverageHighPrice:[input readInt]];
  [newItem setAverageLifeExpectancy:[input readInt]];
  return newItem;
}

ここに私の BinaryFileReader.m があります:

#import "BinaryFileReader.h"

@implementation BinaryFileReader

- (id)init {
  self = [super init];
  return self;
}

- (id)initWithLocation:(NSString*)filepath {
  if ((self = [super init])) {
      _file = [NSFileHandle fileHandleForReadingAtPath:filepath];
      _fileOffset = 0;
      if (_file == nil)
          NSLog(@"%@%@",@"Failed to open file at path:",filepath);
  }
  return self;
}

- (void)close {
  [_file closeFile];
}

- (int)readInt {
  [_file seekToFileOffset:_fileOffset];
  _databuffer = [_file readDataOfLength:4];
  _fileOffset+=4;
  return (*(int*)([_databuffer bytes]));
}
- (NSString*)readNSString {
  int length = [self readInt];
  [_file seekToFileOffset:_fileOffset];
  _databuffer = [_file readDataOfLength:length];
  _fileOffset+=length;
  return [[NSString alloc] initWithData:_databuffer encoding:NSUTF8StringEncoding];
}

- (NSMutableArray*)readNSMutableArrayOfNSString {
  NSMutableArray* array = [[NSMutableArray alloc] init];
  int arrayLength = [self readInt];
  int length;
  for (int i=0; i<arrayLength; i++) {
      length = [self readInt];
      [_file seekToFileOffset:_fileOffset];
      _databuffer = [_file readDataOfLength:length];
      _fileOffset+=length;
      [array addObject:[[NSString alloc] initWithData:_databuffer encoding:NSUTF8StringEncoding]];
  }
  return array;
}

@end

BinaryFileReader.h:

@interface BinaryFileReader : NSObject

@property (nonatomic) int fileOffset;
@property (nonatomic, retain) NSData* databuffer;
@property (nonatomic, retain) NSFileHandle* file;

- (id)init;
- (id)initWithLocation:(NSString*)filepath;
- (void)close;
- (int)readInt;
- (NSString*)readNSString;
- (NSMutableArray*)readNSMutableArrayOfNSString;

@end

なぜこの問題が発生しているのかわかりません。これを解決するための助けをいただければ幸いです。

4

1 に答える 1

0

あなたの質問から私のプロジェクトにコードをコピーして貼り付けました。期待される結果: すべてが正常にコンパイルされます。したがって、問題は間違いなくあなたのコードではありません。

#imports を汚染する別のアイデアにBinaryFileReader.h戻る: プロジェクトでサードパーティのライブラリを使用していますか? はいの場合、それらのいずれかが予期せずBinaryFileReader.hファイルを提供する可能性があります。

これを試してください: 名前BinaryFileReader.hを別のものに変更しますFoo.h。また、 #importBinaryFileReader.mを useに変更しますが、メソッドが配置さFoo.hれているファイルに #import を残して、引き続き. ここで再度コンパイルします。コンパイラは、 が見つからないと不平を言うはずです。エラーがまだセレクターの欠落に関するものである場合は、どこかでプロジェクトが予期せず台無しになっていることがわかります。loadItem:BinaryFileReader.hBinaryFileReader.hBinaryFileReader.h

于 2013-06-11T21:57:12.090 に答える