因此,我们有一个用户拥有应用程序版本1.0的场景.版本2.0出来了,但用户没有更新.当3.0版本出来时,用户决定更新.
由于用户尚未更新应用程序,因此领域文件也未更新,因此在从1.0版迁移到3.0版时,version参数Migration.execute将具有值1而不是2.
当用户直接安装应用程序版本2.0然后迁移到3.0版时,也会出现问题.与前一种情况相同,version参数将是错误的.
有没有办法妥善处理这些案件?
我试图通过Cocoapods安装Realm(Objective C).
但是我一直收到以下错误:
Pods/Realm/Realm/module.modulemap:1:18: Redefinition of module 'Realm'
Run Code Online (Sandbox Code Playgroud)
有人遇到过这个问题吗?
我已经尝试下载他们的CocoapodsExample项目,但我得到了同样的错误.
我正在使用(和爱)Siesta在我的Swift应用程序中与REST Web服务进行通信.我已经实现了一系列ResponseTransformer来将API调用响应映射到模型类,以便将Siesta Resources自动解析为对象实例.一切都很好.
我现在想要实现一个Siesta PersistantCache对象来支持离线模式,让Siesta将这些对象缓存到磁盘(而不是在内存中),方法是将它们存储在Realm中.我不知道如何做到这一点,因为文档说(关于EntityCache.writeEntity函数):
此方法可以 - 并且应该 - 检查实体的内容和/或标头,如果它不可编码则忽略它.虽然它们可以应用基于类型的规则,但是缓存实现不应该应用基于资源或基于URL的规则; 用于
Resource.configure(...)选择缓存哪些资源以及由谁来缓存.
为了符合本指南,我根据服务配置期间的URL模式匹配为每种资源类型创建了一个特定的PersistentCache对象:
class _GFSFAPI: Service {
private init() {
configure("/Challenge/*") { $0.config.persistentCache = SiestaRealmChallengeCache() }
}
Run Code Online (Sandbox Code Playgroud)
但是,由于EntityCache协议方法只包含对Entity的引用(它暴露原始内容而不是类型化对象),我看不出如何在调用EntityCache.writeEntity时调用realm write方法或如何提取EntityCache.readEntity期间Realm中的对象.
任何有关如何处理此问题的建议将不胜感激.
我一直在尝试在我的Android应用中添加Realm.他们的文档很好地解释和易于遵循.但它无法解释这个特定领域.我无法弄清楚@Ignore注释的实际用途.我知道这个注释下的字段不会被保留.
有人可以分享一些用例.我也想知道这些领域的范围.我的意思是,如果我将@Ignore字段设置为某个值,那么该值可用于我的应用中针对该特定启动会话的其他类.如果是,那么我们如何访问它?如果没有(我猜是这样),那么为什么我们还需要这样一个领域呢?
我在这里和网上搜索过但找不到相关信息.如果出于我的无知,我错过了一些资源,请指导我.
谢谢.
我最近通过尝试启动JavaCV的FFmpegFrameGrabber实例来获得以下错误:
java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:324)
at org.bytedeco.javacpp.Loader.load(Loader.java:413)
at org.bytedeco.javacpp.Loader.load(Loader.java:381)
at org.bytedeco.javacpp.avformat$AVFormatContext.<clinit>(avformat.java:2597)
at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:386)
at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:380)...
Run Code Online (Sandbox Code Playgroud)
虽然存在这个问题的解决方案,但没有一个对我有用.
经过多次试验,我发现奇怪的是,如果我在项目中不包含Realm,我就不会再收到此错误.
这是我的build.gradle文件的一部分,其中包含所有这些库:
compile group: 'org.bytedeco', name: 'javacv', version: '1.1'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.0.0-1.1', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.0.0-1.1', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.8.1-1.1', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.8.1-1.1', classifier: 'android-x86'
// ORM
compile 'io.realm:realm-android:0.87.2' // Tested NOT OK - Causes JavaCV to crash
//
Run Code Online (Sandbox Code Playgroud)
我在想,这个问题可能有一个我不知道的解决方案.我发现网上任何地方都没有提到库不兼容或者为什么会出现这种情况.
我将使用任何人可能需要的任何其他详细信息来编辑此帖子. …
我正在编写Android应用程序,我想在Realm数据库中本地保存帐户的配置文件图像.我找不到任何关于这方面的文件.我怎样才能做到这一点?
我将RealmSwift 1.0.0最新使用文档配置到Xcode项目中.安装后我创建了一个类文件并获得模块错误 - 如:类文件中没有这样的模块'RealmSwift'.
1.
2.
请帮我解决这个错误.
我需要添加@PrimaryKey两个由于白痴而缺少它的Realm模型.通过直接关系或RealmLists在多个其他模型中引用模型,两个模型中的一个也引用另一个模型.
我的第一个想法是在迁移中重命名模式并手动复制数据,但随后Realm抱怨模式在其他模式中链接,无法重命名.
这两个模式包含大约15000个可以压缩到大约100个的对象,它们完全相同并且由于缺失而被复制@PrimaryKey.
模型本身有点简单:
class ModelA extends RealmObject {
String primaryKey; // Is missing the @PrimaryKey annotation
String someField;
String someOtherField;
Date someDate;
ModelB relationToTheOtherProblematicModel;
}
class ModelB extends RealmObject {
String primaryKey; // Is also missing the @PrimaryKey annotation
// this class only contains String fields and one Date field
}
Run Code Online (Sandbox Code Playgroud)
当我添加@PrimaryKey到两个类的primaryKey字段时,如何迁移数据?
编辑澄清:
两个模式都包含多个完全相同的项目.
primaryKey | someField | someOtherField
------ | ------ | ------
A | foo | bar
A | …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我实现了recyclerview.我在json foramt中有一个api,其中包含一个研究所的用户信息.现在我最初想要将数据存储到Realm DB中,然后用这些数据填充我的recyclerview.因此,我试图获得这个程序的一些工作文件.但我没有找到任何明确的解释.我不确定它的正确程序.我是否需要使用Httpurlconnection获取所有数据,然后将其存储到Realm.或者有任何改变的方式来做到这一点.
编辑问题
在得到一些sugesstion后,我尝试了以下代码.我正在使用Retrofit 1.9.因为我无法使用Retrofit 2+版本获取数据.因为我从改造1.9获得结果.我想保留我的代码.但现在对如何根据领域设置适配器感到困惑.因为我有json api和realm的单独模型类.我想先将数据存储到域中,然后将其填充到recaclerview.在此时刻,Recyclerview将直接填充服务器数据.
从答案中得到指示后,我编辑了我的问题,如下所示
Json回应
[
{
"_id": "fhfh49879787989",
"dn": "CN=9879798789",
"whenChanged": "20170704065349.0Z",
"name": "Student",
"mail": "student@mail.com",
"updated_at": "2017-07-04T18:22:43.624Z"
},
{
"_id": "595bdcf32c67a3f9ee6c2a25",
"dn": "CN=dsfdsfsdfsf",
"givenName": "Accounting Office",
"whenChanged": "20170801114732.0Z",
"name": "Accounting",
"mail": "accounting@mail.com",
"updated_at": "2017-07-04T18:22:43.641Z"
},
{
"_id": "584ab3b4122d13e1b0d1578d",
"dn": "CN=sfdfsfsdfl",
"sn": "Abels",
"title": "Student",
"givenName": "Gardrut",
"whenChanged": "20170807150844.0Z",
"department": "PMO",
"company": "Multi Lmited",
"name": "Mike Lizz",
"mail": "mail@yahoo.com",
"mobile": "+1321646498",
"updated_at": "2016-12-09T13:37:56.175Z"
},
{
"_id": "584ab3b3122d13e1b0d15735",
"dn": "CN=xdfsdfsfsdf",
"sn": "Acsdff",
"title": "Software Engineer", …Run Code Online (Sandbox Code Playgroud) 如果我像这样在Swift的Realm Cloud上创建匿名用户:
let credentials = SyncCredentials.anonymous()
SyncUser.logIn(with: credentials, server: Constants.authURL) { user, error in
//...
}
Run Code Online (Sandbox Code Playgroud)
用户用随机创建提供商ID喜欢21483490cead296c6bc09ee40254d366,而不是一个电子邮件地址。
当用户以后决定注册帐户时,是否可以将提供者ID更新为他们的电子邮件地址,并identity在SyncUser记录中保持相同?
如果没有,我该如何迁移他们的帐户?我是否必须手动将其所有数据迁移到他们的新用户帐户?