I am having an this error come up:
No visible @interface for 'BinaryFileReader' declares the selector 'initWithLocation:'
for every method called on BinaryFileReader in the method below.
+ (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;
}
Here is my 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
And 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
I don't understand why I am having this issue. Any help to clear this up would be much appreciated.