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입니다.
무엇? ItemShow * item = [[항목 할당] 초기화]; – NCFUSN
오 마이 갓! 나는 바보 야! – NCFUSN