精华内容
下载资源
问答
  • realm

    2018-11-18 16:07:56
    realm的使用 1.依赖的使用: classpath "io.realm:realm-gradle-plugin:2.2.1" //项目下导入的依赖 //bulid下导入的 apply plugin: 'realm-android'  2.工具类的编写 public class ReamlUtils { ...

    realm的使用

    1.依赖的使用:

    classpath "io.realm:realm-gradle-plugin:2.2.1" //项目下导入的依赖
    //bulid下导入的
    apply plugin: 'realm-android'

     2.工具类的编写

    public class ReamlUtils   {
    
        private static ReamlUtils reamlUtils;
    
        private ReamlUtils(){ }
    
        public static ReamlUtils getReamlInstens(){
            if (reamlUtils == null){
                synchronized (ReamlUtils.class){
                    reamlUtils = new ReamlUtils();
                }
            }
            return reamlUtils;
        }
    
        public void initRealm(Context context) {
            Realm.init(context);
        }
    
        /**
         * 创建数据库
         * */
        private static Realm mRealm=null;
    
        public  RealmBuilder getRealm() {
            if (mRealm == null) {
                RealmConfiguration config = new RealmConfiguration.Builder()
                        .name("myrealm.realm") //文件名
                        .schemaVersion(0) //版本号
                        .deleteRealmIfMigrationNeeded()//版本冲突时自动删除原有的版本
                        .build();
                mRealm = Realm.getInstance(config);
            }
            return new RealmBuilder(mRealm);
        }
    
        public static class RealmBuilder{
            private Realm realm;
    
            public RealmBuilder(Realm realm){
                this.realm = realm;
            }
    
            /**
             * 关闭数据库
             */
    
            public void closeReml() {
                realm.close();
            }
    
            /**
             * 更改第一个
             * */
            public <D extends RealmModel> void changeFirst(final D d,final OnChangeRelmListener listener){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm r) {
                        //先查找后得到User对象
                        D bean = (D) mRealm.where(d.getClass()).findFirst();
                        listener.change(bean);
                    }
                });
            }
            /**
             * 更改数据库数据 change
             * */
            public <D extends RealmModel> void changeRealm(final D d,final OnChangeRelmListener listener){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm r) {
                        try {
                            RealmResults<D> list = (RealmResults<D>) mRealm.where(d.getClass()).findAll();
                            listener.change(list.get(list.size()-1));
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
                });
            }
    
            /**
             * 数据库增加数据,没有主键@PrimaryKey  add
             * */
            public <D extends RealmModel> void addRealm(final D d){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm r) {
                        mRealm.copyToRealm(d);
                    }
                });
            }
            /**
             * 数据库增加数据,有主键@PrimaryKey  add
             * */
            public <D extends RealmModel> void addRealmKey(final D d){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm r) {
                        mRealm.copyToRealmOrUpdate(d);
                    }
                });
            }
    
            /**
             * 数据库增加数据,通过回调方式  add
             * */
            public <D extends RealmModel> void add(D d,OnChangeRelmListener listener){
                mRealm.beginTransaction();//开启事务
                D bean = (D) mRealm.createObject(d.getClass());
                listener.change(bean);
                mRealm.commitTransaction();//提交事务
            }
    
            /**
             * 在UI和后台线程同时开启创建write的事务,可能会导致ANR错误。为了避免该问题,可以使用executeTransactionAsync来实现
             * */
            public <D extends RealmModel> void addAsync(final D d,final OnChangeRelmListener listener){
                RealmAsyncTask transaction = mRealm.executeTransactionAsync(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        D bean = (D) realm.createObject(d.getClass());
                        listener.change(bean);
                    }
                });
            }
    
            /**
             * 添加数据,设置监听回调,检测是否添加成功
             * */
    
            private RealmAsyncTask transaction;
            public <D extends RealmModel> void addAsyncState(final D d,final OnChangeRelmListener listener){
                transaction =  mRealm.executeTransactionAsync(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
    
                    }
                }, new Realm.Transaction.OnSuccess() {
                    @Override
                    public void onSuccess() {
                        //成功回调
                        D bean = (D) mRealm.createObject(d.getClass());
                        listener.change(bean);
                    }
                }, new Realm.Transaction.OnError() {
                    @Override
                    public void onError(Throwable error) {
                        //失败回调
                    }
                });
            }
            /**
             * 如果当Acitivity或Fragment被销毁时,在OnSuccess或OnError中执行UI操作,将导致程序奔溃 。用RealmAsyncTask .cancel();可以取消事务 在onStop中调用,避免crash
             * */
            public void onStopAsync () {
                if (transaction != null && !transaction.isCancelled()) {
                    transaction.cancel();
                }
            }
    
            /**
             * 使用Json字符串插入数据 没有主键
             * */
            public <D extends RealmModel> void addJson(final D d,final String json,final OnChangeRelmListener listener){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        mRealm.createObjectFromJson(d.getClass(), json);
                    }
                });
            }
            /**
             * 使用Json字符串插入数据  有主键
             * */
            public <D extends RealmModel> void addJsonKey(final D d,final String json,final OnChangeRelmListener listener){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        mRealm.createOrUpdateObjectFromJson(d.getClass(), json);
                    }
                });
            }
    
            /**
             * 查找第一条数据
             * */
            public <D extends RealmModel> D findFirst(D d){
                D bean = (D) mRealm.where(d.getClass()).findFirst();
                return bean;
            }
            /**
             *根据条件进行获取
             * name为value的所有数据
             * */
            public <D extends RealmModel> D findRealmSelected(D d,String name,String value){
                RealmResults<D> userList = (RealmResults<D>)mRealm.where(d.getClass())
                        .equalTo(name, value).findAll();
                return userList.first();
            }
            /**
             * 查找最后一条数据
             * */
            public <D extends RealmModel> D findLast(final D d){
                RealmResults<D> userList = (RealmResults<D>) mRealm.where(d.getClass()).findAll();
                return userList.get(userList.size()-1);
            }
    
            /**
             * 查找数据
             * */
            public <D extends RealmModel> RealmResults<D> findAll(final D d){
                RealmResults<D> userList = (RealmResults<D>) mRealm.where(d.getClass()).findAll();
                return userList;
            }
            /**
             * 查找排序
             * */
            public <D extends RealmModel> void findAllSort(final D d){
                RealmResults<D> userList = (RealmResults<D>) mRealm.where(d.getClass()).findAll();
                RealmResults<D> result = userList.sort("age"); //根据age,正序排列
                result = userList.sort("age", Sort.DESCENDING);//逆序排列
            }
    
            /**
             * 根据name 获取value
             * */
            public <D extends RealmModel> D findAll(final D d,String name){
                RealmResults<D> userList = (RealmResults<D>)mRealm.where(d.getClass())
                        .isEmpty(name).findAll();
                return userList.get(userList.size()-1);
            }
    
    
            /**
             * 删除完
             * */
            public <D extends RealmModel> void delAll(final D d){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm r) {
                        mRealm.delete(d.getClass());
                    }
                });
            }
    
            public <D extends RealmModel> void delRealm(final D d){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm r) {
                        RealmResults<D> userList = (RealmResults<D>) mRealm.where(d.getClass()).findAll();
                        userList.deleteAllFromRealm();
                    }
                });
            }
    
            /**
             * 删除某一个
             * */
            public <D extends RealmModel> void delRealmPosition(final D d,final int position){
                mRealm.executeTransaction(new Realm.Transaction() {
                    @Override
                    public void execute(Realm r) {
                        RealmResults<D> userList = (RealmResults<D>) mRealm.where(d.getClass()).findAll();
                        userList.deleteFromRealm(position);
                    }
                });
            }
    
            /**
             * 升级数据库
             * */
            public void updateRealm(int version){
                RealmConfiguration config = new RealmConfiguration.Builder()
                        .name("myrealm.realm") //文件名
                        .schemaVersion(version)
                        .migration(new CustomMigration())//升级数据库
                        .build();
            }
    
            public static  class CustomMigration implements RealmMigration {
                @Override
                public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
                    RealmSchema schema = realm.getSchema();
                    if (oldVersion == 0 && newVersion == 1) {
                        RealmObjectSchema personSchema = schema.get("User");
                        //新增@Required的id
                        personSchema
                                .addField("id", String.class, FieldAttribute.REQUIRED)
                                .transform(new RealmObjectSchema.Function() {
                                    @Override
                                    public void apply(DynamicRealmObject obj) {
                                        obj.set("id", "1");//为id设置值
                                    }
                                })
                                .removeField("age");//移除age属性
                        oldVersion++;
                    }
                }
            }
    
            public interface OnChangeRelmListener<D extends RealmModel> {
                void change(D d);
            }
        }
    
    }
    

     3.如何去使用,第一步在application中实例化

    public class App extends Application{
    
        @Override
        public void onCreate() {
            super.onCreate();
            ReamlUtils.getReamlInstens().initRealm(this);
        }
    }

     4.Bean的编写

    public class Bean extends RealmObject {
        @PrimaryKey
        private int id;
    
        private String content;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    }

    5、realm没有自动增长的主键,我暂时没有找到方法,我使用的是自己定义一个游标进行设置主键,那么如何去使用呢?

    @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_query://查询数据
                    RealmResults<Bean> all = ReamlUtils.getReamlInstens().getRealm().findAll(new Bean());
                    for (int i = 0 ; i <all.size(); i ++){
                        Log.d("Tag",all.get(i).getContent()+"---");
                    }
                    Log.d("Tag",all.size()+"个");
                    break;
                case R.id.btn_ok://添加数据
                    String trim = edInput.getText().toString().trim();
                    Bean bean = new Bean();
                    bean.setId(i++);
                    bean.setContent(trim);
                    ReamlUtils.getReamlInstens().getRealm().addRealmKey(bean);
                    break;
            }
        }

     

    展开全文
  • Realm

    2019-02-08 11:22:49
  • Realm not building

    2021-01-11 00:00:57
    <div><p>Having the following error when building realm for release. This issue is not happening in debug mode. <p>Node: 8.1.0 Realm versions: 1.3.1 & 1.8.1 <p>Any help would be much appreciated. ...
  • Realm - Realm浏览器

    千次阅读 2016-07-08 14:39:47
    Realm - Realm浏览器

    可以下载单机版Realm浏览器来读取和编辑.realm数据库。

    这里写图片描述

    使用Tools > Generate demo database选项,能使用简单数据生成一个测试数据库。

    怎样在Realm浏览器中查看你的.realm文件?

    方法1

    当前Realm浏览器不支持直接访问设备上的数据库,所以需要先从模拟器或设备上拷贝出数据库,然后查看它。使用下面的adb命令拷贝数据库:

    adb pull /data/data/<packagename>/files/ .

    这个命令将拉取所有使用Realm.getInstance(getContext())Realm.getInstance(new RealmConfiguration.Builder(context).build())方法创建的realm文件。默认的数据库命名是default.realm。
    注意,该方法只对模拟器或被root的设备有效。

    方法2

    如果你懒于每次使用adb获取realm数据库文件,你可以在你的代码中增加一个导出功能。
    下面是一个导出realm文件,并发送带有realm文件附件邮件的示例:

    public void exportDatabase() {
    
        // init realm
        Realm realm = Realm.getInstance(getActivity());
    
        File exportRealmFile = null;
        try {
            // get or create an "export.realm" file
            exportRealmFile = new File(getActivity().getExternalCacheDir(), "export.realm");
    
            // if "export.realm" already exists, delete
            exportRealmFile.delete();
    
            // copy current realm to "export.realm"
            realm.writeCopyTo(exportRealmFile);
    
        } catch (IOException e) {
            e.printStackTrace();
        }
        realm.close();
    
        // init email intent and add export.realm as attachment
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("plain/text");
        intent.putExtra(Intent.EXTRA_EMAIL, "YOUR MAIL");
        intent.putExtra(Intent.EXTRA_SUBJECT, "YOUR SUBJECT");
        intent.putExtra(Intent.EXTRA_TEXT, "YOUR TEXT");
        Uri u = Uri.fromFile(exportRealmFile);
        intent.putExtra(Intent.EXTRA_STREAM, u);
    
        // start email intent
        startActivity(Intent.createChooser(intent, "YOUR CHOOSER TITLE"));
    }

    不要忘了在Manifest文件中增加以下权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    当前单机版Realm浏览器只有Mac版,如果是其他平台你可以使用Stetho-Realm

    展开全文
  • Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the Java version of Realm, which currently runs only on Android. Realm ...
  • Realm Graphs

    2020-12-26 10:35:39
    <div><p>This is our issue for tracking progress on support for Realm graphs. Realm graphs will further accelerate our ability to replay traces of Realm operations efficiently by memoizing chunks of a ...
  • Realm id

    2020-12-09 13:38:12
    You will have in the API two different values for realm.Id and realm.realm (in my case Foo vs foo). <p>In provider/resource_keycloak_realm.go you use the realm attribute to populate the Id. I think ...
  • Realm

    Realm

    Realm(s) 是我们对数据库的称谓:它包含多个不同的对象,并对应磁盘中的一个文件。在使用之前,需要对 Realm 库进行初始化操作:

    Realm.init(context);
    

    你需要提供一个安卓的 Context 对象来对 Realm 进行初始化。初始化操作只要进行一次。继承 Application 并在重载的 onCreate() 方法中进行初始化是个不错的主意。

    public class MyApplication extends Application {
      @Override
      public void onCreate() {
        super.onCreate();
        Realm.init(this);
      }
    }
    

    请别忘了修改 AndroidManifest.xml:

    <application
      android:name=".MyApplication"
      ...
    />
    

    配置Realm

    RealmConfiguration 用来配置要被创建的 Realm 的各种特性。最简配置如下所示:

    RealmConfiguration config = new RealmConfiguration.Builder().build();
    

    如上配置的 Realm 会被存储在 Context.getFilesDir() 并且命名为 default.realm。

    一个典型的配置如下所示:

    // The RealmConfiguration is created using the builder pattern.
    // The Realm file will be located in Context.getFilesDir() with name "myrealm.realm"
    RealmConfiguration config = new RealmConfiguration.Builder()
      .name("myrealm.realm")
      .encryptionKey(getKey())
      .schemaVersion(42)
      .modules(new MySchemaModule())
      .migration(new MyMigration())
      .build();
    // Use the config
    Realm realm = Realm.getInstance(config);
    

    你还可以有多个RealmConfiguration。如此,你便可以控制Realm的版本、结构(schema)和路径。

    RealmConfiguration myConfig = new RealmConfiguration.Builder()
      .name("myrealm.realm")
      .schemaVersion(2)
      .modules(new MyCustomSchema())
      .build();
    
    RealmConfiguration otherConfig = new RealmConfiguration.Builder()
      .name("otherrealm.realm")
      .schemaVersion(5)
      .modules(new MyOtherSchema())
      .build();
    
    Realm myRealm = Realm.getInstance(myConfig);
    Realm otherRealm = Realm.getInstance(otherConfig);
    

    你可以使用 Realm.getPath() 来获取 Realm 文件的绝对路径。

    很重要的一点是 Realm 实例是线程单例化的,也就是说多次在同一线程调用静态构建器会返回同一 Realm 实例。


    默认 RealmConfiguration

    RealmConfiguration可以保存为默认配置。通过在自定义的Application设置默认的Realm配置,可以使你在代码中的其他地方更加方便地创建针对该默认配置的Realm。

    public class MyApplication extends Application {
      @Override
      public void onCreate() {
        super.onCreate();
        // The Realm file will be located in Context.getFilesDir() with name "default.realm"
        Realm.init(this);
        RealmConfiguration config = new RealmConfiguration.Builder().build();
        Realm.setDefaultConfiguration(config);
      }
    }
    
    public class MyActivity extends Activity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Realm realm = Realm.getDefaultInstance();
        try {
          // ... Do something ...
        } finally {
          realm.close();
        }
      }
    }
    
    

    In-Memory Realm

    定义一个非持久化的、存在于内存中的 Realm 实例:

    RealmConfiguration myConfig = new RealmConfiguration.Builder()
        .name("myrealm.realm")
        .inMemory()
        .build();
    

    这样就可以创建一个存在于“内存中的” Realm。“内存中的”Realm 在内存紧张的情况下仍有可能使用到磁盘存储,但是这些磁盘空间都会在Realm实例完全关闭的时候被释放。

    请注意使用同样的名称同时创建“内存中的”Realm 和常规的(持久化)Realm 是不允许的。

    当某个“内存中的”Realm 的所有实例引用都被释放,该 Realm 下的数据也同时会被清除。建议在你的应用生命周期中保持对“内存中的” Realm 实例的引用以避免非期望的数据丢失。


    Dynamic Realm

    对于普通的 Realm 来说,数据模型被定义成了 RealmObject 的子类。这样做保证了类型安全,但有时候某些数据模型在编译期是无法获得的。例如在处理数据迁移(migration)或CSV文件的时候。

    DynamicRealm 是普通 Realm 的一个变种。它可以在没有 RealmObject 子类的情况下操作 Realm 数据。其对数据的访问是基于字符串而非 RealmObject 的定义。

    创建 Dynamic Realm 使用与创建普通 Realm 相同的RealmConfiguration,但是它的创建过程会忽略对 schema、migration以及 schema 版本的检查。

    RealmConfiguration realmConfig = new RealmConfiguration.Builder().build();
    DynamicRealm realm = DynamicRealm.getInstance(realmConfig);
    
    // In a DynamicRealm all objects are DynamicRealmObjects
    DynamicRealmObject person = realm.createObject("Person");
    
    // All fields are accessed using strings
    String name = person.getString("name");
    int age = person.getInt("age");
    
    // An underlying schema still exists, so accessing a field that does not exist
    // will throw an exception
    person.getString("I don't exist");
    
    // Queries still work normally
    RealmResults<DynamicRealmObject> persons = realm.where("Person")
        .equalTo("name", "John")
        .findAll();
    

    DynamicRealm 以类型安全和性能为代价,换来了更多的灵活性。请在你确实需要这些灵活性的情况下使用。


    关闭Realm实例

    Realm 实现了 Closeable 接口以便与释放 native 内存和文件描述符,请务必在使用完毕后关闭 Realm 实例。

    Realm 实例是基于引用计数的, 也就是说假设你在同一个线程中调用了 getInstance() 两次,你需要同样调用 close() 两次以关闭该实例。举例来说,如果你需要实现 Runnable,简单地在函数开始的时候调用 getInstance(),在函数结束的时候调用 close() 即可!

    对于UI线程,你可以选择在 onDestroy() 方法内调用 realm.close()。

    如果你想使用除 UI 线程外的 Looper 线程,可以参考以下代码:

    public class MyThread extends Thread {
    
        private Realm realm;
    
        public void run() {
            Looper.prepare();
            try {
                realm = Realm.getDefaultInstance();
                //... Setup the handlers using the Realm instance ...
                Lopper.loop();
            } finally {
                if (realm != null) {
                    realm.close();
                }
            }
        }
    }
    

    对于 AsyncTask,这里有个不错的例子可以参考:

    protected Void doInBackground(Void... params) {
        Realm realm = Realm.getDefaultInstance();
        try {
            // ... Use the Realm instance ...
        } finally {
            realm.close();
        }
    
        return null;
    }
    

    如果你想使用 Thread 和 Runnable 进行一些短期任务,参考如下代码:

    / Run a non-Looper thread with a Realm instance.
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            Realm realm = null;
            try {
                realm = Realm.getDefaultInstance();
                // ... Use the Realm instance ...
            } finally {
                if (realm != null) {
                    realm.close();
                }
            }
        }
    });
    
    thread.start();
    

    如果你很幸运地工作在 minSdkVersion >= 19 且 Java >= 7 之下,可以使用try-with-resources:

    try (Realm realm = Realm.getDefaultInstance()) {
        // No need to close the Realm instance manually
    }
    
    

    自动刷新

    如果 Realm 实例存在于一个带有 Looper 的线程,那么这个 Realm 实例即具有自动更新的功能。这意味这如果发生了 Realm 数据库的变化,那么该 Realm 实例会在下一个事件循环(event loop)中自动更新。这个便捷的功能使你不必花费太多的精力就能保证的UI与数据的实时同步。

    如果 Realm 的实例所在线程没有绑定 Looper,那么该实例不会被更新直到你手动调用 waitForChange() 方法。请注意,不更新 Realm 以保持对旧数据的引用会造成而外的磁盘和内存开销。这也是为什么要在线程结束时调用 close() 关闭 Realm 实例的一个重要原因。

    如果你想确定当前 Realm 实例是否有自动更新功能,可以通过调用 isAutoRefresh() 方法查询。


    查找 Realm 数据库文件

    如果你想知道你应用的 Realm 文件的具体路径,请参见这个 StackOverflow上的答案。

    原文链接

    https://realm.io/docs/java/latest/#realms

    展开全文
  • Support Realm

    2021-01-12 15:09:22
    <div><p>A number of users of <a href="http://github.com/realm/realm-java">Realm (for Android)</a> has asked if we support Roboelectric. Realm's development is very such driven by user feedback, ...
  • Realm Building Modern Swift Apps with Realm Database 学习iOS Realm Database必备书籍,深入浅出
  • Delete realm

    2020-12-09 01:51:30
    <p>Double click is needed for opening a realm browser window <img alt="doubleclick-realm" src="https://img-blog.csdnimg.cn/img_convert/497fe2a8edc26085b5e35ba7dd24d1fc.gif" /></p> </li><li> <p>A panel...
  • <p>Open default.realm in realm studio <h2>Expected Results <p>Open the default.realm file in realm studio <h2>Actual Results <p>Nothing. Nothing happens. I am able to open the default.realm file on ...
  • <div><p>The Realm Browser was working perfectly before Realm v0.94.0, but since updating (we moved to cocoapods too); the browser now crashes if it is open while a change to the Realm Database is made...
  • Realm数据库

    2020-12-30 09:13:06
    Realm数据库的增删改查 /使用自定义的配置/ Realm.init(this); RealmConfiguration configuration = new RealmConfiguration.Builder() .name(“TeacherLiu.realm”)//数据库的名称 数据库的路径:data/data/应用...
  • <div><p>We use realm to store service responses (Data) as a caching layer. The response files sometimes gets huge, as in 100'ds of MB (even after its compacted). When opening these .realm files, ...
  • <div><p>In one of our app, we have both realm-js and realm-java integrated to handle data validations. Initially, the realm file is created from JS (React Native). Then in the background while ...
  • <div><p>https://github.com/realm/realm-java/issues/5302</p> <p>The file in question can be found in https://github.com/realm/realm-java/files/1320695/cache.realm.zip .</p><p>...realm/realm-core</p></div>
  • s Realm database in the browser but it's not happening. It used to work properly before but now it just "quits unexpectedly" as soon as I open the file. I have Realm browser 2.1.2 and I&#...
  • Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the iOS, macOS, tvOS & watchOS versions of Realm Swift & Realm ...
  • iOS realm

    2019-08-20 18:06:07
    文章目录简介Realm的优势与亮点Realm BrowserRealm中的一些重要概念Realm的安装-CocoaPodsXcode插件常用属性和方法Realm的类定义说明RLMRealm类RLMObject类RLMResults类使用举例创建RLMObject类存储操作查询操作更新...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,646
精华内容 6,258
关键字:

realm