2012-07-23 2 views
1

sqlite에서로드 된 데이터가있는 tableView에서 행을 선택하면 특정 필드의 값을 변경할 수 있습니다. 두 개의 뷰를 조작하면서 첫 번째 뷰는 전체 데이터베이스를 가변 배열로로드하고 특정 필드를 누르면 다른 뷰로 이동합니다. 두 번째보기에는 버튼이 있습니다. 이 버튼을 누르면 데이터베이스의 필드 결과를 얻는 방법은 값을 변경합니다.Xcode를 사용하여 SQlite3에서 선택한 필드의 값을 변경하십시오.

#import "AuthorVC.h" 
#import "Author.h" 
#import <sqlite3.h> 
#import "SearchVC.h" 
//#import "DetailViewController.h" 
#import "Details.h" 





@implementation AuthorVC 

@synthesize theauthors; 
@synthesize author; 
NSString *authorNAme; 
NSString *authorNAme2; 

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ searchBar.delegate = (id)self; 
    [self authorList]; 
    [super viewDidLoad]; 



} 

- (void)viewDidUnload 
{ 
    [searchBar release]; 
    searchBar = nil; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 



-(void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)text 
{ 
    if(text.length == 0) 
    { 
     isFiltered = FALSE; 
    } 
    else 
    { 
     isFiltered = true; 
     filteredTableData = [[NSMutableArray alloc] init]; 

     for (Author* author in theauthors) 
     { //[NSPredicate predicateWithFormat:@"SELECT * from books where title LIKE %@", searchBar.text]; 
      NSRange nameRange = [author.name rangeOfString:text options:NSAnchoredSearch]; 
      NSRange descriptionRange = [author.genre rangeOfString:text options:NSAnchoredSearch]; 
      if(nameRange.location != NSNotFound || descriptionRange.location != NSNotFound) 
      { 
       [filteredTableData addObject:author]; 

      } 
     } 
    } 

    [self.tableView reloadData]; 
} 


/* 
-(void) showDetailsForIndexPath:(NSIndexPath*)indexPath 
{ 

    NSLog(@"This is the showDetailsForIndexPath"); 
    [self->searchBar resignFirstResponder]; 
    Details* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"]; 
    AuthorVC* author; 

    if(isFiltered) 
    { 
     author = [filteredTableData objectAtIndex:indexPath.row]; 
    } 
    else 
    { 
     author = [theauthors objectAtIndex:indexPath.row]; 
    } 

    vc.author = author; 
    [self.navigationController pushViewController:vc animated:true]; 
    NSLog(author); 
} 
*/ 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 

    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

    int rowCount; 
    if(self->isFiltered) 
     rowCount = filteredTableData.count; 
    else 
     rowCount = theauthors.count; 

    return rowCount; 
    // Return the number of rows in the section. 
    //return [self.theauthors count]; 
} 
/* 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    // NSString *Title; 
    // Author *auth = (Author*)segue.destinationViewController; 
    Details *dv = (Details*)segue.destinationViewController; 
    dv.labelText.text = author.title; 
    NSLog(@"Did Enter prepareForSegue"); 
    // labelText.text = @"Hy"; 
} 
*/ 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"This is the one in authorVc"); 
    static NSString *CellIdentifier = @"AuthorsCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 
    int rowCount = indexPath.row; 

    Author *author = [self.theauthors objectAtIndex:rowCount]; 


     if(isFiltered){ 
     author = [filteredTableData objectAtIndex:indexPath.row]; 
//   UIAlertView *messageAlert = [[UIAlertView alloc] 
//          initWithTitle:@"Filtered" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
//   
//   [messageAlert show]; 


    } 
    else{ 
     author = [theauthors objectAtIndex:indexPath.row]; 
//  UIAlertView *messageAlert = [[UIAlertView alloc] 
//          initWithTitle:@"Not filtered" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
//   
//  [messageAlert show]; 


    } 




    cell.textLabel.text = author.name; 
    // cell.detailTextLabel.text = author.genre; 
    //NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",author.name] autorelease]; 

    return cell; 

} 


-(NSMutableArray *) authorList{ 
    theauthors = [[NSMutableArray alloc] initWithCapacity:1000000]; 
    NSMutableArray * new2 = [[NSMutableArray alloc ] initWithCapacity:100000]; 
    // authorNAme = theauthors.sortedArrayHint.description; 
    @try { 
     NSFileManager *fileMgr = [NSFileManager defaultManager]; 
     NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; 

     BOOL success = [fileMgr fileExistsAtPath:dbPath]; 
     if(!success) 
     { 
      NSLog(@"Cannot locate database file '%@'.", dbPath); 
     } 
     if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK)) 
     { 
      NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); 

     } 


     // const char *sql = "SELECT F_Keyword FROM wordss"; 
    const char *sql = "SELECT * FROM Sheet1"; 

     sqlite3_stmt *sqlStatement; 
     if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) 
     { 
     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
     }else{ 
      while (sqlite3_step(sqlStatement)==SQLITE_ROW) { 
       Author * author = [[Author alloc] init]; 

       //NSString *authorName = author.name; 
       author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; 

       author.title = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,4)]; 
       author.genre = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 6)]; 
       new2 = author.genre; 
       // NSLog(new2); 
       authorNAme=author.genre;    
       //NSLog(author.genre); 
       [theauthors addObject:author]; 

      } 
    //  authorNAme = author.genre; 


       } 
    } 
    @catch (NSException *exception) { 
     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
    } 
    @finally { 
    // sqlite3_finalize(sqlStatement);. 
    // authorNAme = nil; 
     sqlite3_close(db); 
    // authorNAme = Nil; 
     return theauthors; 
    } 


} 


- (void)dealloc { 
    [searchBar release]; 
    [super dealloc]; 
    //[authorNAme release]; 
} 



//- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
//  
// /* 
//  When a row is selected, the segue creates the detail view controller as the destination. 
//  Set the detail view controller's detail item to the item associated with the selected row. 
//  */ 
// if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) { 
//   
//  NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; 
//  Details *detailViewController = [segue destinationViewController]; 
//  detailViewController.author = [dataController objectInListAtIndex:selectedRowIndex.row]; 
// } 
//} 



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 


    NSLog(@"This is the showDetailsForIndexPath"); 
    [self->searchBar resignFirstResponder]; 
    Details* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"]; 
    AuthorVC* author; 

    if(isFiltered) 
    { 
     author = [filteredTableData objectAtIndex:indexPath.row]; 
    } 
    else 
    { 
     author = [theauthors objectAtIndex:indexPath.row]; 
    } 

    vc.author = author; 
    authorNAme = vc.author.genre; 
    authorNAme2 = vc.author.name ; 
    NSLog(@"This is the details %@",vc.author.genre); 
    NSLog(@"This is the authorNAme Variable %@" , authorNAme); 
    vc.labelText.text = vc.author.genre; 
    vc.text2.text = vc.author.name; 
    NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",indexPath.row] autorelease]; 
    UIAlertView *messageAlert = [[UIAlertView alloc] 
           initWithTitle:@"Row Selected" message:authorNAme2 delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

    [messageAlert show]; 

    [self.navigationController pushViewController:vc animated:true]; 




/* 

    //Get the selected country 
    NSString *selectedAuthors = [theauthors objectAtIndex:indexPath.row]; 
    //NSLog(selectedAuthors); 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    Details *dvController = [storyboard instantiateViewControllerWithIdentifier:@"Details"]; //Or whatever identifier you have defined in your storyboard 

    //authorNAme = selectedAuthors.description; 

     //Initialize the detail view controller and display it. 
    //Details *dvController = [[Details alloc] init/*WithNibName:@"Details" bundle:nil*///]; 
/*  
    dvController.selectedAuthors = selectedAuthors; 

NSString *titleString = [[[NSString alloc] initWithFormat:@"Element number : %d",indexPath.row] autorelease]; 
    UIAlertView *messageAlert = [[UIAlertView alloc] 
           initWithTitle:@"Row Selected" message:titleString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

    [messageAlert show];*/ 
// NSString *elem = [new2 objectAtIndex:0]; 


    //NSLog(dvController.labelText.text); 
// NSString *titleString = [[[NSString alloc] initWithFormat:@"Author title : %d",indexPath.row] autorelease]; 

    // NSString *titleString2 = [[new2 objectAtIndex:indexPath.row] autorelease]; 
    // NSLog(@"this is the selected row , %s",titleString2); 

    // authorNAme = titleString; 


    /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! BReak point of SQL Query!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ 
/* 
    @try { 

     NSFileManager *fileMgr2 = [NSFileManager defaultManager]; 


     // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"dictionary.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"authorsDb2.sqlite"]; 
     //  NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"FinalDb.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"xxJuridique-FINAL-OK.sqlite"]; 

     NSString *dbPath2 = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; 

     BOOL success = [fileMgr2 fileExistsAtPath:dbPath2]; 
     if(!success) 
     { 
      NSLog(@"Cannot locate database file '%@'.", dbPath2); 
     } 
     if(!(sqlite3_open([dbPath2 UTF8String], &db) == SQLITE_OK)) 
     { 
      NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); 

     } 
     NSLog(@"access to the second DB is ok"); 


     // const char *sql = "SELECT F_Keyword FROM wordss"; 
     const char *sql2 = "SELECT field7 FROM Sheet1 WHERE field1 = 'titleString' "; 
     //NSLog(sql2); 

     sqlite3_stmt *sqlStatement2; 
     if(sqlite3_prepare(db, sql2, -1, &sqlStatement2, NULL) != SQLITE_OK) 
     { NSLog(@"Problem with prepare the db"); 
      NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
     }else{ 

    // while (sqlite3_step(sqlStatement2)==SQLITE_ACCESS_EXISTS) { 

      NSLog(@"Starting to prepare the result"); 
      Author * author2 = [[Author alloc] init]; 
      NSLog(@"Author 2 created"); 

      author2.genre2 = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement2, 7)]; 
      NSLog(@"Initialistion of author 2 is ok"); 

     //  NSLog(author2.genre); 
       // authorNAme = author2.genre; 


      [theauthors addObject:author2]; 

    // } 

     } 

    } 
    @catch (NSException *exception) { 
     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 
    } 
    @finally { 
     // sqlite3_finalize(sqlStatement);. 
     // authorNAme = nil; 
     sqlite3_close(db); 
     // authorNAme = Nil; 
     return theauthors; 
    } 

*/ 


    //[self.navigationController pushViewController:dvController animated:YES]; 

} 


- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath { 

    //return UITableViewCellAccessoryDetailDisclosureButton; 
    return UITableViewCellAccessoryDisclosureIndicator; 
} 

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { 

    [self tableView:tableView didSelectRowAtIndexPath:indexPath]; 
} 



@end 

위해 DetailsView 컨트롤러가 Details.m로 알고 AuthorVC.m로 TableviewController 알고

// 
// Details.m 
// AuthorsApp 
// 
// Created by georges ouyoun on 7/17/12. 
// Copyright (c) 2012 __MyCompanyName__. All rights reserved. 
// 

#import "Details.h" 
#import "Author.h" 
#import "AuthorVC.h" 
#import <sqlite3.h> 

@interface Details() 

@end 

@implementation Details 
@synthesize Favo; 
@synthesize text2; 
@synthesize labelText; 
@synthesize selectedAuthors; 
@synthesize author , infoRequest; 

BOOL PAss = NO; 
BOOL SElected2 = NO; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 




- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
//  authorNAme = author.genre; 
// self.labelText.text =authorNAme; 
    // Do any additional setup after loading the view. 



    self.labelText.text = authorNAme; 
    self.text2.text = authorNAme2; 

    /*   This is where the label text APPearsssssssss     */ 


    NSLog(@"Everything is ok now !"); 
    // NSLog(authorNAme); 

} 
- (void)viewDidUnload 
{ 
    // [self setLabelText:nil]; 
    NSLog(@"U have entered view did unload"); 
    [AddBut release]; 
    AddBut = nil; 
    [self setText2:nil]; 
    [super viewDidUnload]; 

    [self setLabelText:Nil]; 
    [authorNAme release]; 

    // Release any retained subviews of the main view. 
} 


/* 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    if ([segue.identifier isEqualToString:@"AuthorsCell"]) { 

     [segue.destinationViewController setLabelText:author.title]; 

    } 


} 



*/ 


-(void)viewWillAppear:(BOOL)animated 
{ 

    //labelText.text = authorNAme; 

    NSLog(@"U have entered the viewWillAppear tag"); 

    // detailsLabel.text = food.description; 
    //authorNAme=Nil; 
    //[self setauthorName:Nil]; 
} 

/* 
-(void) viewDidAppear:(BOOL)animated{ 

    labelText.text = @"This is the DidAppearTag"; 

    NSLog(@"U have entered the viewDidAppear tag"); 


} 

*/ 

-(void) viewWillDisappear:(BOOL)animated{ 


    NSLog(@"This is the view will disappear tag"); 

    //authorNAme.release; 


} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

- (void)dealloc { 
    [labelText release]; 
    [AddBut release]; 
    [text2 release]; 
    [super dealloc]; 
} 


- (IBAction)AddButClick:(UIButton *)sender { 



    [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateSelected]; 
    [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateHighlighted]; 
    Favo = [[NSMutableArray alloc] initWithCapacity:1000000]; 

    NSLog(authorNAme); 

    @try { 
     NSFileManager *fileMgr = [NSFileManager defaultManager]; 
     // NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"dictionary.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"authorsDb2.sqlite"]; 
     //  NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"FinalDb.sqlite"]; 
     //NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"xxJuridique-FINAL-OK.sqlite"]; 

     NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.sqlite"]; 

     BOOL success = [fileMgr fileExistsAtPath:dbPath]; 
     if(!success) 
     { 
      NSLog(@"Cannot locate database file '%@'.", dbPath); 
     } 
     if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK)) 
     { 
      NSLog(@"An error has occured: %@", sqlite3_errmsg(db)); 

     } 


     // const char *sql = "SELECT F_Keyword FROM wordss"; 
     const char *sql = "SELECT * FROM Sheet1"; 
     NSLog(@"Successfully selected from database"); 
     sqlite3_stmt *sqlStatement; 
     if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) 
     { 
      NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 


     }else{ 


      NSLog(@"Got in the else tag"); 

      while (sqlite3_step(sqlStatement)==SQLITE_ROW /*&& PAss == NO*/) { 


       NSLog(@"Got in the while tag"); 

       Author * author = [[Author alloc] init]; 
       NSLog(@"Author initialized"); 

       author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,10)]; 
       NSLog(@"Initialization ok"); 
      //  NSLog(author.name); 

       if(/*author.name == @"NO" &&*/ HighLighted == NO){ 
        //const char *sql2 = "INSERT INTO Sheet1 "; 

        [AddBut setImage:[UIImage imageNamed:@"apple-logo copy.png"] forState:UIControlStateNormal]; 
        NSLog(@"We have not selected it as fav yet"); 
        // [AddBut setSelected:NO]; //btn changes to normal state 
        NSLog(@"The button was NOt highlighted and now is"); 
        HighLighted = YES; 
        // PAss = YES; 
        // [self release]; 
        break; 


       } 

       else 
       { 

        NSLog(@"We have selected it as fav"); 

        [AddBut setImage:[UIImage imageNamed:@"apple-logo.png"] forState:UIControlStateNormal]; 
        [AddBut setSelected:NO]; //btn changes to normal state 
        NSLog(@"The button was highlighted and now is NOt"); 


        HighLighted = NO; 
        break; 

        // [self viewDidLoad]; 
        // PAss = YES; 

       } 
     //  [Favo release]; 

     //  NSLog(Favo); 

//    author.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; 
//    author.title = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,2)]; 
//    author.genre = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)]; 
//    [theauthors addObject:author]; 
      } 
     } 
    } 
    @catch (NSException *exception) { 

     NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db)); 

    } 
    @finally { 
     // sqlite3_finalize(sqlStatement); 
     sqlite3_close(db); 

     return Favo; 
    } 





    // [AddBut setSelected:YES]; 

// if(SElected == YES){ 
//  NSLog(@"The button was highlighted and now not"); 
//   
//  [AddBut setImage:[UIImage imageNamed:@"apple-logo.png"] forState:UIControlStateNormal]; 
//  [AddBut setSelected:NO]; //btn changes to highlighted åstate 
//  SElected = NO; 
//   
//   } 
//  
// else{ 
//  
//  [AddBut setSelected:YES]; //btn changes to normal state 
//  NSLog(@"The button was NOt highlighted and now is"); 
//  SElected = YES; 
//  
// } 

} 
@end 

답변

1

먼저 선택한 행의 값을해야; 이것은 당신의 TABLEVIEWCONTROLLER

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath  { 
    if(listObject.count!=0){ 
//you will get the object from the list 
ObjectType *selectedObject=(ObjectType*)[listObject objectAtIndex:indexPath.row]; 

//you can call your view controller (in my example init with nib) 
yourDetailViewController = [[YourDetailViewController alloc] initWithNibName:@"YourDetailViewControllerNib" bundle:nil]; 
//you can set your selected object in order to use it on your detail view controller 
    yourDetailViewController.objectSelected = selectedObject; 
    [self.navigationController yourDetailViewController animated:YES]; 
} 
} 

에 그리고 이것은 당신의 DETAILVIEWCONTROLLER에;

-(void)objectUpdate:(Object*)selectedObject withDBPath:(NSString *)dbPath{ 
NSError *errMsg; 
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { 

    const char *sql_stmt = [@"CREATE TABLE IF NOT EXISTS iosobjecttable (yourcolumns INTEGER PRIMARY KEY NOT NULL , youranothercolumn VARCHAR)" cStringUsingEncoding:NSUTF8StringEncoding]; 

    if (sqlite3_exec(database, sql_stmt, NULL, NULL, (__bridge void*)errMsg) == SQLITE_OK) 
    { 
     // SQL statement execution succeeded 
    } 

     if(updateStmt == nil) { 
      NSString *querySQL = [NSString stringWithFormat: 
            @"update iosobject set youranothercolumn=%@ where p_event_id=%@", object.changedcomlumn,object.objectid]; 

      const char *query_sql = [querySQL UTF8String]; 
      if(sqlite3_prepare_v2(database, query_sql, -1, &updateStmt, NULL) != SQLITE_OK){ 
       NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database)); 
       //NSLog(@"%@",errMsg); 
      } 
     } 
    @try { 

     if(SQLITE_DONE != sqlite3_step(updateStmt)){ 
      NSAssert1(0, @"Error while updating data. '%s'", sqlite3_errmsg(database)); 
      //NSLog(@"%@",errMsg); 
     } 
     else{ 
      //NSLog(@"updatingupdatingedelementt %@",tEvent.eventid); 
     } 
     sqlite3_reset(updateStmt); 
    } 
    @catch (NSException* ex) { 
      //NSLog(@"Error while updating data. '%s'", sqlite3_errmsg(database)); 
     } 
    } 
} 

이 함수를 호출하는 방법은 다음과 같습니다.

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSString *dbPath=[appDelegate getDBPath]; 
[self objectUpdate:objectUpdate withDBPath:dbPath]; 

그리고 앱 대리인의 경우 앱 대리인에 getDBPath를 써야합니다.

- (NSString *) getDBPath { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
    NSString *documentsDir = [paths objectAtIndex:0]; 
    return [documentsDir stringByAppendingPathComponent:@"yourdbname.sqlite"]; 
} 
+0

나는 그것을 인정해야는 ... 난 정말 .... 손실 엑스 코드에서 심상의 newb 실제로 나는 잃었어요 ... 당신은 내가 당신의 코드를 보았다 querstion –

+0

@EliasRahme에서 업데이트를 확인하시기 바랍니다 수있어 . 그러나 문제는 무엇입니까? 지금 나는 당신이 당신의 품목을 목록으로 만들 수 있고, 그들 중 하나를 선택하고 세부 사항 페이지에 정확하게 갈다는 것을 생각한다? 너는 무엇을 필요로 하는가? 당신이 먼저 업데이트를 요청 했습니까? –

+0

것은 내가 버튼을 클릭 할 때 데이터베이스에서 Fav이라는 필드의 값을 업데이트해야한다는 것입니다. 그리고 나는 실제로 당신의 제안을 따르려고 애 쓰면서 길을 잃었습니다. 응답 할 시간을 말해 주신 것에 대해 진심으로 감사 드리며, 제 제안 코드와 제 제안을 결합하는 데 도움을주십시오. –

관련 문제