0

URLを介してデータベーステーブルに画像を保存しました。URLからその画像を取得するために使用した後。無事挿入できました。URL パスを持つ画像。しかし、フェッチすると、バイナリ値が表示されます<Mydata: 0x71756b0>。これは何ですか?

コード:

if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {

        NSData* data = nil;

       // UIImage *image = nil;

       // const char *sql = "SELECT product_image FROM product order by order_by";

         const char *sql = "SELECT product_image FROM product";

        NSLog(@"sql is %s",sql);

        sqlite3_stmt *statement;
      //  int catID = 0;
        if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
            // We "step" through the results - once for each row.
            while (sqlite3_step(statement) == SQLITE_ROW) {
Mydata *Mylist = [[Mydata alloc]init];

                int length = sqlite3_column_bytes(statement, 2);
                data       = [NSData dataWithBytes:sqlite3_column_blob(statement, 2) length:length];
              //  UIImage *image = [UIImage imageWithData:data];

                 Mylist.photo = [[UIImage alloc] initWithData:data];

                NSLog(@"my list is %@",Mylist);

                [mArray addObject:Mylist];

}
        }
        sqlite3_finalize(statement);
    }

    else {
        sqlite3_close(database);
        NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));
        // Additional error handling, as appropriate...
    }
}

画像表示:

int Width = 0; 

    for (int i = 0; i<[mArray count]; i++ ) {


      NSLog(@"index %@", mArray[i]);



     imgView1=[[UIButton alloc]initWithFrame:CGRectMake(20+(i*74), 0, 72, 72)];

        Width = Width + 20+(i*74);

        [imgView1 setTag:i+1];

        [imgView1 addTarget:self action:@selector(Clicked:) forControlEvents:UIControlEventTouchUpInside];

        [imgView1 setImage:((Mydata *)[mArray objectAtIndex:i]).photo forState:UIControlStateNormal];

        [scrollview addSubview:imgView1];

        //  [myScroll addSubview:imgView1];



    }
4

1 に答える 1

2

画像をデータベースに保存する代わりに、URL リンクのみを DB に保存します。

URL から画像を取得するには、ASyncImageView を使用します。

そのため、画像はサーバーから 1 回だけ取得され、ローカルに保存されます。

于 2013-08-22T12:54:14.403 に答える