2013-03-13 3 views
0

У меня есть массив со значениями путей изображений, и я хочу динамически отображать эти изображения в ячейке collection view. Но я получаю исключение.Исключение iOS в пользовательской ячейке представления коллекции

Мой код:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    data=[MyDatabase new]; 
    imagearray=[data OpenMyDatabase:@"SELECT pic_url FROM interior":@"pic_url"]; 


    gallerycollection.dataSource=self; 
    [[self gallerycollection]setDelegate:self]; 
    gallerycollection.backgroundColor=[UIColor clearColor]; 
} 

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *[email protected]"Cell"; 
    customcell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; 
    // [[cell nyimage]setImage:[UIImage imageNamed:[imagearray objectAtIndex:indexPath.row]]]; 
    UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:1]; 
    recipeImageView.image=[imagearray objectAtIndex:indexPath.section * 1 + indexPath.row]; 
    return cell; 

} 

и я получаю исключение,

2013-03-13 11:22:30.662 Home[3371:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[customcell setImage:]: unrecognized selector sent to instance 0x9f7e410 

@ Митхун MP: это мои файлы базы данных

MyDatabase.h 

#import "FMDatabase.h" 
@interface MyDatabase : NSObject 
@property (strong,nonatomic) NSString *databaseName,*databasePath; 
-(NSMutableArray *) OpenMyDatabase: (NSString *) query: (NSString *) column; 
-(FMDatabase *)openDatabase: (NSString *)databasename; 
-(NSMutableArray *) storeDatabaseColumnInArray: (FMDatabase *) database: (NSString *) sqlStatement: (NSString *) columnName; 
@end 


MyDatabase.m 

#import "MyDatabase.h" 
#import "FMDatabase.h" 




@implementation MyDatabase 



-(NSMutableArray *)OpenMyDatabase: (NSString *)query: (NSString *)column 
{ 
    //store the database name here 
    [email protected]"App_Database.sqlite"; 

    //get the reference of the database to be stored in device or emulator 
    FMDatabase *database=[self openDatabase: self.databaseName]; 

    //open the database 
    [database open]; 

    //fetch a collumn from database and store it in array 
    // NSArray *nsarr= [self storeDatabaseColumnInArray: database: @"select id from kas":@"id"]; 
    NSArray *nsarr= [self storeDatabaseColumnInArray: database: query: column]; 

    //close the database 
    [database close]; 
    return nsarr; 
} 


- (FMDatabase *)openDatabase: (NSString *)databasename 
{ 

    NSFileManager *fm = [NSFileManager defaultManager]; 
    NSString *documents_dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *db_path = [documents_dir stringByAppendingPathComponent: databasename ]; 
    NSString *template_path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: databasename]; 

    if (![fm fileExistsAtPath:db_path]) 
     [fm copyItemAtPath:template_path toPath:db_path error:nil]; 
    FMDatabase *db = [FMDatabase databaseWithPath:db_path]; 
    if (![db open]) 
     NSLog(@"Failed to open database!"); 
    return db; 
} 
-(void) createAndCheckDatabase 
{ 
    BOOL success; 

    NSFileManager *fileManager=[NSFileManager defaultManager]; 
    success=[fileManager fileExistsAtPath:_databasePath]; 
    NSString *databasePathFromApp=[[[NSBundle mainBundle] resourcePath] 
            stringByAppendingPathComponent:self.databaseName ]; 
    [fileManager copyItemAtPath:databasePathFromApp toPath:_databasePath error:nil]; 

} 

-(NSMutableArray *) storeDatabaseColumnInArray : (FMDatabase *) database: (NSString *) sqlStatement: (NSString *) columnName 
{ 

    NSMutableArray *mutablearray = [NSMutableArray array]; 
    FMResultSet *results = [database executeQuery: sqlStatement]; 

    while([results next]) { 

     NSString *rowValue = [results stringForColumn:columnName]; 

     [mutablearray addObject:results]; 
     NSLog(@"row value %@",rowValue); 
    } 

    //convert the nsmutable array to nsarray 


    NSMutableArray *temparr=[NSMutableArray arrayWithArray:mutablearray]; 
     return temparr; 


} 

@end 

ответ

0

Проблема происходит из-за этой строки:

UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:1]; 

Я думаю, что вы устанавливаете тег на пользовательскую ячейку, а не на изображение.

+0

спасибо, чувак .... и были правы. Я пробовал это, но теперь получаю другое исключение, - [FMResultSet _isResizable]: непризнанный селектор отправлен в экземпляр 0x9f7bb30 2013-03-13 11: 42: 21.330 Главная [3565: c07] *** Завершение приложения из-за неперехваченного исключения ' NSInvalidArgumentException ', reason:' - [FMResultSet _isResizable]: нераспознанный селектор, отправленный в экземпляр – user2147631

+0

@ user2147631: каково содержимое imageArray? Я думаю, что это объект класса FMResultSet. Если я прав, то проблема заключается в том, что «вы задаете объект класса FMResultSet для изображения, а не для изображения» –

+0

imagearray содержит имена изображений, которые извлекаются из столбца базы данных. что я должен был делать сейчас? – user2147631

Смежные вопросы