标签: realm

合并Realm对象和Gson对象

我的目标是将使用GSON实例化的对象持久保存到数据库中.

我的问题如下:

  • 我可以用GSON实例化一个对象,所以GSON会处理所有的属性,但是它不会被持久化到db

  • 我可以用Realm实例化一个对象,但是我必须填写属性的所有setter.

在我的oncreate中,这两个方法的部分相同

//delete previous realm file
Realm.deleteRealmFile(this);

//gson instance
Gson gson = new Gson();

//realm instance
realm = Realm.getInstance(this);
Run Code Online (Sandbox Code Playgroud)

**我班的名字是Vacature**

信息:我知道以下代码需要在里面:

realm.beginTransaction();

// code here

realm.commitTransaction();
Run Code Online (Sandbox Code Playgroud)

选项1:

//get class with gson
Vacature vacatureGson = gson.fromJson(jsonString, Vacature.class);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为您必须使用实例化对象

Class instance = realm.createObject(Class.class); // Create a new object
Run Code Online (Sandbox Code Playgroud)

选项2:

//get instance with gson
Vacature vacatureGson = gson.fromJson(jsonString, Vacature.class);
//make instance with realm
Vacature realmVacature = realm.createObject(Vacature.class);
realmVacature = vacatureGson;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为这不是将所有属性从一个对象复制到另一个对象的正确方法.但是,如果有一种很好的方法可以将所有属性从gsonObject复制到realmObject,则选项2可能会起作用.

关于如何解决这个难题的任何想法?

java android realm gson

19
推荐指数
1
解决办法
5056
查看次数

在Realm android中更新语句

我应该如何在android中使用realm DB更新已存在的值?

我一直在尝试更新它,但它只是添加为新值而不是覆盖它

android realm

19
推荐指数
2
解决办法
3万
查看次数

Android - 哪一个使用Active Android或Realm

我已经使用ActiveAndroid一段时间了,我最近听说Realm是另一个不错的选择.我正在考虑更改我的应用程序以使用Realm,但在此之前,我在寻找是否有人已经完成了这两者之间的性能比较.我在realm的网站上找到了一些比较,但那些是在ORMLite和SQLite上.

任何建议表示赞赏.

android realm activeandroid

19
推荐指数
2
解决办法
6232
查看次数

我应该为Realm中的每个实体定义主键吗?

我注意到设置PK在Realm中不是强制性的,只是可以省略.但在文件中声明:

为主键属性自动创建索引.

我想澄清一些问题:

1)如果我不自己分配PK,则默认值是由Realm定义的.它是哈希还是其他什么?(如果我没有设置PK并调用[MyRealmObject primaryKey]它返回nil)

2)如果这个隐式PK默认索引?我应该担心它,因为如果它没有被索引,是否意味着它会影响这个实体的一般性能(例如,获取对象)?

3)每次为每个RLMObject子类定义PK是一个好习惯,还是Realm不需要它,只是可以依赖它由Realm本身定义的内部实现?

database primary-key realm ios

19
推荐指数
1
解决办法
5466
查看次数

Realm支持Swift 3.0

我想知道是否已经可以使用Realm和Swift 3.0的beta版.

虽然我在Realm repo中看到了RealmSwift-swift3.0目录,但我没有成功正确使用它.我应该如何从源代码安装它?

realm ios swift swift3

19
推荐指数
2
解决办法
9598
查看次数

如何使用Realm项目文件组织React Native?

我已经选择了在我的React Native应用程序中存储数据的领域.我不明白,如何在我的项目中组织文件.文档仅提供一个组件的简单代码.但我需要不同组件的数据库不同部分.

我在一个存储库中看到,所有方案都传递给"configureRealm.js"文件中的数组:

new Realm({schema: [Dogs, Cats]});
Run Code Online (Sandbox Code Playgroud)

我还发现,我可以在"scheme"目录中放置不同的方案,并将它们导入到我需要的地方.

例如,在"Cats.js"反应组件我可以做:

import Cats from 'schemes/Cats';

this.realm = new Realm({schema: [Cats]});
Run Code Online (Sandbox Code Playgroud)

并在"Dogs.js"导入狗并使用此方案初始化领域.

但我不是第一次也不确定.什么是正确的,组织领域的最佳方式是对本机应用程序做出反应?

javascript realm react-native

19
推荐指数
1
解决办法
6440
查看次数

领域从错误的线程访问

我正在使用串行GCD队列来处理领域.Realm accessed from incorrect thread当GCD开始为队列切换线程时,应用程序崩溃,异常.有没有办法使用GCD API绑定给定领域的线程?

这是一个简单的例子

self.realmQueue = dispatch_queue_create("db", DISPATCH_QUEUE_SERIAL);

__block RLMRealm *realm = nil;
dispatch_async(self.realmQueue, ^{
    realm = [RLMRealm realmWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"temp"]];
});

self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = 0.001;
__block int i = 0;
__block BOOL shouldBeginWriteTransaction = YES;

[self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {

    dispatch_async(self.realmQueue, ^{
        if (shouldBeginWriteTransaction) {
            [realm beginWriteTransaction];
            shouldBeginWriteTransaction = NO;
        }

        AccelerationEvent *event = [[AccelerationEvent alloc] init];
        event.x = accelerometerData.acceleration.x;
        event.y = accelerometerData.acceleration.x;
        event.z = accelerometerData.acceleration.y;
        event.time …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c realm ios

18
推荐指数
1
解决办法
2万
查看次数

在Realm Android上列出<Object>或RealmList <RealmObject>

我需要一个list<Object>使用Realm.我试过RealmList<RealmObject>但它不起作用,因为它RealmObject是抽象的.

java android realm

18
推荐指数
1
解决办法
2万
查看次数

单元测试Swift 2.0,@ stestable导入和方案定位问题

我最近将我的应用程序和单元测试转换为Swift 2.0.我@testable import AppName在我的Tests.swift文件中使用.

由于无法在多个目标中执行子类的问题(请参阅此处的问题),我的类EntityName只能是目标成员资格AppName,而不是AppNameTests.

问题是,一旦我切换到AppNameTests模式运行单元测试,模块中的代码AppName无法找到类EntityName和我

使用未声明的类型'EntityName'

AppName如果在AppNameTests没有该实体类不是该方案的成员的情况下从该方案运行测试,我如何进行编译?

unit-testing realm ios swift swift2

18
推荐指数
2
解决办法
1万
查看次数

领域从错误的线程访问

我有一个应用程序LoginActivity,当用户正确登录时,我注册接收消息.而且LoginActivity跳到了MainActivity.到达的消息应该存储在数据库(Realm)中,以便从Main中的Realm实例中恢复.

但是当消息到达时崩溃领域启动此错误:

Exception in packet listener
    java.lang.IllegalStateException: Realm access from incorrect thread. Realm objects can only be accessed on the thread they were created.
    at io.realm.BaseRealm.checkIfValid(BaseRealm.java:383)
    at io.realm.Realm.executeTransactionAsync(Realm.java:1324)
    at io.realm.Realm.executeTransactionAsync(Realm.java:1276)
    at es.in2.in2tant.LoginActivity.newMessageReceived(LoginActivity.java:124)
    at es.in2.in2tant.Connection.Connection$4$1.processMessage(Connection.java:227)
    at org.jivesoftware.smack.chat.Chat.deliver(Chat.java:180)
    at org.jivesoftware.smack.chat.ChatManager.deliverMessage(ChatManager.java:351)
    at org.jivesoftware.smack.chat.ChatManager.access$300(ChatManager.java:53)
    at org.jivesoftware.smack.chat.ChatManager$2.processPacket(ChatManager.java:162)
    at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1126)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)

我对Realm如何工作有点迷茫,我不知道如何在没有崩溃的情况下在整个应用程序中访问域,并保持存储从收到的消息LoginActivity.一些帮助,或实现这一目标的方法?

LoginActivity.java:

public class LoginActivity extends AppCompatActivity implements ConnectionConnectResponse {
.....
protected void onCreate(Bundle savedInstanceState) {
//Realm Init config:
        Realm.init(this);
        RealmConfiguration …
Run Code Online (Sandbox Code Playgroud)

android realm

18
推荐指数
1
解决办法
2万
查看次数