gpt4 book ai didi

android - iOS SQLite 与 Android SQLite 等价物

转载 作者:行者123 更新时间:2023-11-29 17:48:54 25 4
gpt4 key购买 nike

我是 Objective-C 的新程序员。我创建了一个 Android 应用程序并集成了 SQLite。我想在 iOS 中构建相同的应用程序。在用于 SQLite 操作的 Android 中,我创建了一个从 Content Provider 扩展的类:

public class MyCProvider extends ContentProvider {
...
...
}

我也重写了这个方法: bool onCreate() 方法:

@Override
public boolean onCreate() {
dbHelper = new MySQLiteOpenHelper(getContext(), MySQLiteOpenHelper.DATABASE_NAME, null, MySQLiteOpenHelper.DATABASE_VERSION);
return dbHelper != null;
}



@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
...
}



@Override
public String getType(Uri uri) {
...
}

@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = dbHelper.getWritableDatabase();

String nullColumnHack = null;

long id = -1;
Uri contentURI = null;

switch (uriMatcher.match(uri)) {
case GROUP_ALL_ROWS:
contentURI = GROUP_CONTENT_URI;
id = db.insert(USEFUL_NUMBER_GROUP_TABLE_NAME, nullColumnHack, values);
break;
...
...
}

我想知道这个方法在 Objective-C 中的等效性。对此有什么想法吗?

最佳答案

SQLite 直接随 iOS 一起提供,您只需使用它的 native C API . Apple 不提供任何形式的包装。

态度似乎是你可以直接使用 SQLite 或者你可以使用 Core Data,这真的是完全不同的东西——它是一个可查询的对象图,它隐含地依赖于一个不透明的存储方法,可以是一个基于 SQLite 的关系数据库,如果你喜欢,但 Core Data 显然不是关系数据库。如果这是您选择的存储,您可以而且应该针对下面的 SQL 存储进行优化,但数据库本身有一个私有(private)架构并且不会被直接查询。

因此没有等同于 SQLiteOpenHelper 的工具。如果你想使用 SQLite,那么你需要自己完成打开、创建、迁移等工作。

iOS 也没有与 ContentProvider 等效的东西,因为它是一种形式化的模型结构,允许在应用程序之间共享数据,但 iOS 并没有真正在应用程序之间共享数据。来自同一个开发人员的应用程序可以共享磁盘存储,所有应用程序可以通过 URL 架构等相互打开,但是您不能编写不同应用程序都可以交互的代码。因此,您只需构建您认为最合适的任何类型的模型对象,其生命周期和接口(interface)将由您明确决定。

关于android - iOS SQLite 与 Android SQLite 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24434993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com