我有一个RealmResults <Student>对象.我想将它转换为RealmList <Student>对象.有什么建议?
作为一个Xamarin开发人员,我曾经使用Sqlite作为移动数据库,
最近Realm出现了.
关于它们在性能和易用性方面的差异的任何想法..等等?
使用任何一种方法的最佳做法是什么?
我在iOS中为realm对象设置了一个REST API.但是我发现在我的对象中创建一个喜欢的标志有一个问题.我已经创建了一个最喜欢的bool,但每次从API更新对象时,它都会将收藏夹设置为默认值false.在这里,我希望此标志不会更新,因为只有本地存储了收藏夹.我怎样才能做到这一点?
class Pet: Object{
dynamic var id: Int = 1
dynamic var title: String = ""
dynamic var type: String = ""
dynamic var favorite: Bool = false
override class func primaryKey() -> String {
return "id"
}
}
Run Code Online (Sandbox Code Playgroud)
CreateOrUpdate
let pet = Pet()
pet.id = 2
pet.name = "Dog"
pet.type = "German Shephard"
try! realm.write {
realm.add(pet, update: true)
}
Run Code Online (Sandbox Code Playgroud) 我开始在iOS 8或更高版本上使用Realm并查看Realm中的文档.我注意到所有属性都在dynamic它们前面有关键字.Realm需要这个吗?我已经阅读了关于关键字的Apple文档,可以在这里找到.https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html
我们为我们的应用程序使用Realm.我们的应用已经发布测试版.现在我想在我们的一个领域对象中添加一个字段.所以我写了RealmMigration,我也写了一个.这里的问题是如何将此Realm迁移应用到我的应用程序.我使用Realm.getInstance()在我想要的时候获取领域实例.请记住,Realm.getInstance()每次都在整个应用程序中使用,我想访问Realm数据库.
那么,我有点询问如何应用这种迁移?任何线索都可能有所帮助.谢谢.
我的RealmMigration如下.
public class RealmMigrationClass implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
if(oldVersion == 0) {
RealmSchema sessionSchema = realm.getSchema();
if(oldVersion == 0) {
RealmObjectSchema sessionObjSchema = sessionSchema.get("Session");
sessionObjSchema.addField("isSessionRecordingUploading", boolean.class, FieldAttribute.REQUIRED)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("isSessionRecordingUploading", false);
}
});
sessionObjSchema.setNullable("isSessionRecordingUploading",false);
oldVersion++;
}
}
}
}
public class Session extends RealmObject {
@PrimaryKey
private String id;
@Required
private Date date;
private double latitude;
private double longitude;
private String location; …Run Code Online (Sandbox Code Playgroud) 我想在Realm中使用一个可选的Int并且我想到了一个老错误.
码
dynamic var reps: Int? = nil
Run Code Online (Sandbox Code Playgroud)
错误
'Property cannot be marked dynamic because its type cannot be represented in Objective-C'
Run Code Online (Sandbox Code Playgroud)
我使用Realm 0.96.1和XCode 7.1
我在Realm文档中理解它表示Int不支持Optional但是https://twitter.com/realm/status/656621989583548416.这是来自Realm twitter,这就是为什么我感到困惑.是Optional Int支持还是仍然没有?
考虑以下型号:
class Person: Object {
dynamic var name = ""
let hobbies = Dictionary<String, String>()
}
Run Code Online (Sandbox Code Playgroud)
我想在境界去购买类型的对象[String:String],我从Alamofire请求得到了,但不能因为hobbies 有 通过定义let根据RealmSwift文档,因为它是一个List<T>/ Dictionary<T,U>种类型.
let hobbiesToStore: [String:String]
// populate hobbiestoStore
let person = Person()
person.hobbies = hobbiesToStore
Run Code Online (Sandbox Code Playgroud)
我也试图重新定义,init()但总是最终导致致命的错误.
如何在RealSwift中简单地复制或初始化Dictionary?我在这里错过了一些小事吗?
我不知道如何使用Realm进行排序.我目前的代码是.
data = realm.objects(WorkoutSet)
data = data!.sorted("date")
Run Code Online (Sandbox Code Playgroud)
我要排序日期的Int从高数量低的数字.文档需要更多信息,GitHub链接会抛出一条404消息.
我已经尝试过使缓存无效,清理项目,重新安装应用程序。我没有使用数据绑定。
我正在使用Realm 插件 io.realm:realm-gradle-plugin:5.3.1
以下是一些相关信息build.gradle:
compileSdkVersion 29
buildToolsVersion 29.0.3
implementation "androidx.appcompat:appcompat:1.1.0"
Run Code Online (Sandbox Code Playgroud)
Android Gradle 插件:3.6.0
Gradle:5.6.4
这是日志:
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/appcompat/R$drawable;
at androidx.appcompat.widget.AppCompatDrawableManager$1.<init>(AppCompatDrawableManager.java:63)
at androidx.appcompat.widget.AppCompatDrawableManager.preload(AppCompatDrawableManager.java:57)
at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:328)
at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:278)
at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:221)
at androidx.appcompat.app.AppCompatActivity.getDelegate(AppCompatActivity.java:543)
at androidx.appcompat.app.AppCompatActivity.attachBaseContext(AppCompatActivity.java:98)
at android.app.Activity.attach(Activity.java:6909)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2759)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2904)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1596)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6600)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:772)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.appcompat.R$drawable" on path: DexPathList[[zip file "/data/app/com.develop-dkwyyr2-QVmFBqzVHNDZtQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.develop-dkwyyr2-QVmFBqzVHNDZtQ==/lib/arm64, /data/app/com.develop-dkwyyr2-QVmFBqzVHNDZtQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
at …Run Code Online (Sandbox Code Playgroud) 我正在使用Realm数据库构建一个Android应用程序.
我有一个RealmObject子类Article,有一个id字段(它的和int,也是一个@PrimaryKey).我想传递给查询列表intS(一Set,int[]或其他)的文章ID和只检索文章.
在SQL中会是这样的:
SELECT *
FROM `table`
where ID in (5263, 5625, 5628, 5621)
Run Code Online (Sandbox Code Playgroud)
我已经看到在这个StackOverflow问题中可以在iOS中执行此操作.
我怎样才能在Android中执行此操作?谢谢!
编辑:只是为了通知,我也在这里的GitHub回购中询问了这个问题.