在目标c中我的cocoa mac应用程序的Sqlite教程概述

时间:2015-06-15 06:24:42

标签: ios objective-c macos sqlite cocoa

我在目标c中有mac的cocoa应用程序。

现在,在我的应用程序中,我想实现sqlite数据库,就像我为ios应用程序所做的那样。

由于我是mac开发的新手,我不知道如何在cocoa应用程序中实现它。如何与我的应用程序建立sqlite连接?

我使用了sqlite.h和sqlite.m文件并使用了以下代码。

-(void)databaseOpen
{
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [path objectAtIndex:0];
    NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:@"SchoolApp.sqlite"];
    database = [[Sqlite alloc] init];
    [database open:myDBnew];
}
- (void)createEditableCopyOfDatabaseIfNeeded
{
    // First, test for existence.
    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];


    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"SchoolApp.sqlite"];


    /*if([[NSFileManager defaultManager] fileExistsAtPath:writableDBPath]){
     [[NSFileManager defaultManager] removeItemAtPath:writableDBPath error:nil];
     }
     */
    success = [fileManager fileExistsAtPath:writableDBPath];

    if (success) return;
    // The writable database does not exist, so copy the default to the appropriate location.
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"SchoolApp.sqlite"];

    ////NSLog(@"Default : %@",defaultDBPath);
    success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];

    if (!success) {
        NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);

    }
}

但如何在我的可可应用程序中执行此操作?

请有人指导我。

...谢谢

1 个答案:

答案 0 :(得分:1)

您应该可以为OSX和iOS重复使用现有代码,因为这将依赖Foundation.framework个课程,而不是UIKitAppKit

注意:您不应该使用NSAssert来表示代码中的错误,因为如果定义了NS_BLOCK_ASSERTIONS,可以在编译时删除这些错误;而是抛出一个NSException