我的目标是将使用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可能会起作用.
关于如何解决这个难题的任何想法?
我应该如何在android中使用realm DB更新已存在的值?
我一直在尝试更新它,但它只是添加为新值而不是覆盖它
我已经使用ActiveAndroid一段时间了,我最近听说Realm是另一个不错的选择.我正在考虑更改我的应用程序以使用Realm,但在此之前,我在寻找是否有人已经完成了这两者之间的性能比较.我在realm的网站上找到了一些比较,但那些是在ORMLite和SQLite上.
任何建议表示赞赏.
我注意到设置PK在Realm中不是强制性的,只是可以省略.但在文件中声明:
为主键属性自动创建索引.
我想澄清一些问题:
1)如果我不自己分配PK,则默认值是由Realm定义的.它是哈希还是其他什么?(如果我没有设置PK并调用[MyRealmObject primaryKey]它返回nil)
2)如果这个隐式PK默认索引?我应该担心它,因为如果它没有被索引,是否意味着它会影响这个实体的一般性能(例如,获取对象)?
3)每次为每个RLMObject子类定义PK是一个好习惯,还是Realm不需要它,只是可以依赖它由Realm本身定义的内部实现?
我想知道是否已经可以使用Realm和Swift 3.0的beta版.
虽然我在Realm repo中看到了RealmSwift-swift3.0目录,但我没有成功正确使用它.我应该如何从源代码安装它?
我已经选择了在我的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"导入狗并使用此方案初始化领域.
但我不是第一次也不确定.什么是正确的,组织领域的最佳方式是对本机应用程序做出反应?
我正在使用串行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) 我需要一个list<Object>使用Realm.我试过RealmList<RealmObject>但它不起作用,因为它RealmObject是抽象的.
我有一个应用程序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) realm ×10
android ×5
ios ×4
java ×2
swift ×2
cocoa ×1
database ×1
gson ×1
javascript ×1
objective-c ×1
primary-key ×1
react-native ×1
swift2 ×1
swift3 ×1
unit-testing ×1