我有与object_sku相关联的UIImageView。图像显示可点击的UIButton的滚动视图。当我点击它进入屏幕的中心并显示标签0,1,2,3。标签0图像包含object_sku 123,标签1包含object_sku测试,标签2包含object_sku test1。 UIImageView图像以第一个图像点击标记0和标记1,标记2的屏幕顺序显示。如果我删除Tag0图像,它获取标签object_sku(test1)的NSLog。为什么它没有得到Tag0 object_sku。它从屏幕上获取最后一次更新值。怎么解决这个?我必须得到,如果我删除Tag0图像我应该得到object_sku 123.但我没有得到。
屏幕中心的数组:
mmageView=[[UIImageView alloc]initWithFrame:CGRectMake(100,200,350,199)];
[mmageView setUserInteractionEnabled:YES];
// [mmageView setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[productimg_array objectAtIndex:[sender tag]-1]]]]];
[mmageView setImageWithURL:[NSURL URLWithString:[productimg_array objectAtIndex:[sender tag]-1]] placeholderImage:nil options:SDWebImageProgressiveDownload completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
}];
[mmageView setTag:[sender tag]-1];
NSLog(@"mmageView Tag: %i",mmageView.tag);
object = [[ObjectAddedToScreen alloc] init];
object.productDescription = [descript_array objectAtIndex:[sender tag]-1];
object.view = mmageView;
object.productId=[product_id_array objectAtIndex:[sender tag]-1];
object.object_sku=[sku_array objectAtIndex:[sender tag]-1];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"db1.sqlite"];
NSLog(@"filepath %@",path);
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
// const char *sql = [[NSString stringWithFormat:@"SELECT tag FROM product_sku where tag = '%ld'",(long)object.object_imageView.tag] cStringUsingEncoding:NSUTF8StringEncoding];
const char *sqlInsert = [[NSString stringWithFormat:@"insert into product_sku (sku, tag) values ('%@', '%ld')", object.object_sku, (long)mmageView.tag] cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"sql is %s",sqlInsert);
// BOOL favExist = false;
sqlite3_stmt *statement, *addStmt;
if (sqlite3_prepare_v2(database, sqlInsert, -1, &statement, NULL) == SQLITE_OK) {
// We "step" through the results - once for each row.
while (sqlite3_step(statement) == SQLITE_ROW) {
// favExist = true;
const char *sqlInsert = [[NSString stringWithFormat:@"insert into product_sku (sku, tag) values ('%@', '%ld')", object.object_sku, (long)mmageView.tag] cStringUsingEncoding:NSUTF8StringEncoding];
//----
NSLog(@"sql insert is %s",sqlInsert);
// [catID release];
if(sqlite3_prepare_v2(database, sqlInsert, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
NSLog(@"error is %s",sqlite3_errmsg(database));
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
}
}
NSLog(@"mmageView object.object_sku is %@", object.object_sku);
[self.objectsAddedToScreen addObject:object];
[self.view addSubview:mmageView];
删除图像:
int new_delete_tag;
NSString *sku_delete;
NSArray *subViewsArray = self.view.subviews;
CGPoint tapLocation1 = [sender locationInView: self.view];
for(UIView *v in subViewsArray){
if([v isKindOfClass:[UIImageView class]])
{
UIImageView *imageView = (UIImageView *)v;{
if (CGRectContainsPoint(imageView.frame, tapLocation1)){
[imageView removeFromSuperview];
for (object in self.objectsAddedToScreen)
if (object.view == sender.view)
{
// NSString *productDescription = object.productDescription;
// txtt.text=productDescription;
UIImageView *imageView = object.object_imageView;
NSInteger object_sku = sender.view.tag;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"db1.sqlite"];
// NSLog(@"filepath %@",path);
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
const char *sql = [[NSString stringWithFormat:@"SELECT sku,tag FROM product_sku where tag = '%d'",object_sku] cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"sql is %s",sql);
// BOOL favExist = false;
sqlite3_stmt *statement, *addStmt;
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) {
sku_delete = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(statement, 0)];
NSLog(@"sku_delete is %@",sku_delete);
// favExist = true;
new_delete_tag = sqlite3_column_int(statement, 1);
NSLog(@"new_delete_tag is %d",new_delete_tag);
// if(new_delete_tag && sku_delete){
sqlite3_stmt *addStmt;
const char *sqlDelete = [[NSString stringWithFormat:@"delete FROM product_sku where sku = '%@' AND tag = '%d'",sku_delete,new_delete_tag] cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"sql delete is %s",sqlDelete);
// NSLog(@"sql delete1 is %s",sqlDelete1);
if(sqlite3_prepare_v2(database, sqlDelete, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while deleting tag from product_sku . '%s'", sqlite3_errmsg(database));
NSLog(@"%s error finalizing %s", __FUNCTION__, sqlite3_errmsg(database));
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while deleting tag from product_sku . '%s'", sqlite3_errmsg(database));
// }
}
}
}
}
答案 0 :(得分:0)
在您的删除例程中,您正在遍历图像以查看要删除的图像,然后继续使用object.object_sku
(它似乎与您点击的图像没有任何关系)。我会假设您将使用图像视图的tag
来了解您要删除的基础对象。