1

当我从 tableView 中选择一行,从 sqlite 加载数据时,目的是能够更改某个字段的值。通过两个视图进行操作,第一个将整个数据库加载到一个可变数组中,当我按下某个字段时,我转到另一个视图。在第二个视图中,我有一个按钮。如何获取按下此按钮时数据库中的字段将更改值的结果。

TableviewController 称为 AuthorVC.m

#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 :

//
//  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
4

1 回答 1

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"];
}
于 2012-08-13T07:37:15.077 回答