iPhone NSMain捆绑资源

时间:2012-03-12 07:43:52

标签: iphone xcode ipad core-data nsbundle

我想在我的应用程序中锁定主捆绑资源..我在我的资源文件夹中添加了数据库,我想要锁定,以便没有人可以从应用程序外部访问或读取数据库。像文件上的一些.bin类型转换?并将它们解密到应用程序中?有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

如上所述,在普通的iPhone上,没有人能看到您的捆绑数据。然而,在越狱电话上,人们可以轻松地提取您的持久存储并使用它。

因此,您需要加密持久性存储,即sql文件本身。这可以通过在创建持久存储时传递适当的选项来完成:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"database.sqlite"];
    NSURL *storeUrl = [NSURL fileURLWithPath:storePath ];

    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
        // Handle error
    }

    NSDictionary *fileAttributes = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey];
    if (![[NSFileManager defaultManager] setAttributes:fileAttributes ofItemAtPath:storePath error:&error]) {
        // Handle error
    }

    return persistentStoreCoordinator;
}