NCFUSN
NCFUSN

Reputation: 1644

NSInvalidArgumentException issue

I've got NSInvalidArgumentException while feeding data into object in DBAccess class.

ObjectClass-> ItemShow

@interface ItemShow : NSObject 
{
NSString *itemYear;
NSInteger KMRef;
NSString *mintMark;
NSInteger rarity;
NSString *specialRemark;
NSString *mintage;
NSString *dateCode;
NSString *dateDescription;
NSString *dateComment;
NSString *masterMark;
NSInteger availability;
NSInteger quality;
}
@property(nonatomic,retain)NSString *itemYear;
@property(nonatomic)NSInteger KMRef;
@property(nonatomic)NSInteger rarity;
@property(nonatomic)NSInteger availability;
@property(nonatomic)NSInteger quality;
@property(nonatomic,retain)NSString *specialRemark;
@property(nonatomic,retain)NSString *dateComment;
@property(nonatomic,retain)NSString *mintage;
@property(nonatomic,retain)NSString *mintMark;
@property(nonatomic,retain)NSString *masterMark;
@property(nonatomic,retain)NSString *dateCode;
@property(nonatomic,retain)NSString *dateDescription;

@end

.m

@implementation ItemShow
@synthesize     itemYear,KMRef,mintMark,rarity,specialRemark,mintage,dateCode,dateDescription,dateComment,masterMark,availability,quality;
@end

DBAccess class method:

-(NSMutableArray*)getItem:(int)itemID
{
NSMutableArray *itemsArray=[[[NSMutableArray alloc]init]autorelease];
const char *sqlItems=sqlite3_mprintf("SELECT itm.itemYear,itm.KMRef,itm.mintmark,itm.rarity,itm.specialRemark,itm.mintage,dc.dateCode,dc.dateDescription,itm.dateComment,itm.masterMark,av.availability,av.[quality]\
                                     FROM Items as itm, DateCultures as dc, itemAvailability as av\
                                     WHERE dc.dateCultureID=itm.dateCulture AND av.itemID=itm.itemID\
                                     AND itm.itemID=%i",itemID);

sqlite3_stmt *statement;
int sqlResult = sqlite3_prepare_v2(database, sqlItems, -1, &statement, NULL);
if ( sqlResult== SQLITE_OK)
{
    while (sqlite3_step(statement) == SQLITE_ROW)
    {
        ItemShow *item=[[Item alloc]init];

        char *itemYear=(char *)sqlite3_column_text(statement,0);
        item.KMRef=sqlite3_column_int(statement,1);
        char *mintmark=(char *)sqlite3_column_text(statement,2);
        item.rarity=sqlite3_column_int(statement,3);
        char *specialRemark=(char*)sqlite3_column_text(statement,4);
        char *mintage=(char *)sqlite3_column_text(statement,5);
        char *dateCode=(char *)sqlite3_column_text(statement,6);
        char *dateDescription=(char *)sqlite3_column_text(statement,7);
        char *dateComment=(char *)sqlite3_column_text(statement,8);
        char *masterMark=(char *)sqlite3_column_text(statement,9);
        item.availability=sqlite3_column_int(statement,10);
        item.quality=sqlite3_column_int(statement,11);

        item.itemYear=(itemYear)?[NSString stringWithUTF8String:itemYear]:@"";
        item.mintage=(mintage)?[NSString stringWithUTF8String:mintage]:@"Unknown";
        item.mintMark=(mintmark)?[NSString stringWithUTF8String:mintmark]:@"";
        item.specialRemark=(specialRemark)?[NSString stringWithUTF8String:specialRemark]:@"";
        item.dateCode=(dateCode)?[NSString stringWithUTF8String:dateCode]:@"";
        item.dateDescription=(dateDescription)?[NSString stringWithUTF8String:dateDescription]:@"";
        item.dateComment=(dateComment)?[NSString stringWithUTF8String:dateComment]:@"";
        item.masterMark=(masterMark)?[NSString stringWithUTF8String:masterMark]:@"";

        [itemsArray addObject:item];
        [item release];
    }
    sqlite3_finalize(statement);
}
else
{
    [self dbConnectionError];
}
return itemsArray;
 }

So, at the row

item.KMRef=sqlite3_column_int(statement,1);

I am getting: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Item setKMRef:]: unrecognized selector sent to instance 0x5c767a0'

What's wrong with it? KMRef is int and it is syntesized .

Upvotes: 0

Views: 221

Answers (1)

zaph
zaph

Reputation: 112857

In the supplied code it is not shown where item comes from, is it valid? Best guess item is not what you think and does not respond to setKMRef. Perhaps itm and item are supposed to be the same name?

Upvotes: 1

Related Questions