2012-01-11 5 views
0

DBAccess 클래스의 개체에 데이터를 입력하는 동안 NSInvalidArgumentException이 발생했습니다.NSInvalidArgumentException 문제

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를 클래스 방법 :

-(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; 
} 

그래서, 행에서

item.KMRef=sqlite3_column_int(statement,1); 
,451,515,

나는 점점 오전 : 인해 Catch되지 않는 'NSInvalidArgumentException'예외 응용 프로그램 종료, 이유는 : - 그것은 잘못 무엇

'[항목 setKMRef을 :] 알 수없는 선택기 인스턴스 0x5c767a0로 보내'? KMRef는 int이고 은 syntesized입니다.

답변

1

제공된 코드에서 item의 출처는 표시되지 않습니다. 유효합니까? 최상의 추측 item은 귀하가 생각하는 것이 아니며 setKMRef에 응답하지 않습니다. 아마도 itmitem은 같은 이름으로되어 있습니까?

+1

무엇? ItemShow * item = [[항목 할당] 초기화]; – NCFUSN

+1

오 마이 갓! 나는 바보 야! – NCFUSN

관련 문제