我从Parse.com查询数据并将它们保存在本地Realm数据库(iOS/swift)中.每个对象都有一个唯一的属性(A),但也有一个可能相同的属性(B).避免将具有相同属性B的对象添加到领域数据库中的最有效方法是什么?提前致谢.
我是Swift中的Realm新手.有没有办法在Realm Object中存储字符串数组?
我有一个JSON对象,如:
"firstName": "John",
"imgName": "e9a07f7d919299c8fe89a30022151135cd63773f.jpg",
"lastName": "Wood",
"permissions": {
"messages": ["test", "check", "available"]
},
Run Code Online (Sandbox Code Playgroud)
如何在权限密钥中存储消息数组?
我正在使用0.81.1版本的Realm.我有这门课:
public class KanjiComp extends RealmObject {
@PrimaryKey
private String character;
private String strokes;
private int frequency;
public String getCharacter() {
return character;
}
public void setCharacter(String character) {
this.character = character;
}
public String getStrokes() {
return strokes;
}
public void setStrokes(String strokes) {
this.strokes = strokes;
}
public int getFrequency() {
return frequency;
}
public void setFrequency(int frequency) {
this.frequency = frequency;
}
}
Run Code Online (Sandbox Code Playgroud)
我第一次创建这样的对象:
KanjiComp realmKanjiComp = realm.createObject(KanjiComp.class);
realmKanjiComp.setCharacter(cur.getString(cur.getColumnIndex("literal")));
realmKanjiComp.setStrokes(cur.getString(cur.getColumnIndex("strokes")));
realmKanjiComp.setFrequency(0);
Run Code Online (Sandbox Code Playgroud)
我想增加频率值.为此我需要帮助我更新频率的方法.
领域文档说明了这一点:
使用主键可以使用createOrUpdate()方法,该方法将查找具有此主键的现有对象,如果找到,则更新它; 如果没有找到,它将创建一个新对象.
但我找不到createOrUpdate()方法.使用JSON的所有方法.

我的完整代码如下所示: …
我对领域完全陌生.我想在我的android项目中使用realm db.我已经阅读了官方的Realm文档.我需要在我的android项目中设置领域.为此,我已将gradle依赖性添加为
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:0.88.2"
}
}
apply plugin: 'realm-android'
Run Code Online (Sandbox Code Playgroud)
这是他们在文档中给出的.但这对我不起作用.它给出了错误说法Plugin with id 'realm-android' not found.
这是我的build.gradle文件
apply plugin: 'com.android.application'
apply plugin: 'realm-android'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.db.realmsample"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:0.88.2"
}
}
}
dependencies {
compile …Run Code Online (Sandbox Code Playgroud) 我有这个代码
#if TARGET_OS_SIMULATOR
let device = false
let RealmDB = try! Realm(path: "/Users/Admin/Desktop/realm/Realm.realm")
#else
let device = true
let RealmDB = try! Realm()
#endif
Run Code Online (Sandbox Code Playgroud)
设备bool工作正常,但RealmDB仅适用于其他条件.
我在RealmResults中有大约20行,需要使用最近的日期对列表进行排序
RealmConfiguration realmConfig = new RealmConfiguration.Builder(getActivity()).build();
Realm realm = Realm.getInstance(realmConfig);
Run Code Online (Sandbox Code Playgroud)
如下
RealmResults<MyTable> List = realm.where(MyTable.class).findAll().sort("date",SORT.DESCENDING);
Run Code Online (Sandbox Code Playgroud) 现在我得到错误Property types for 'value' property do not match. Old type 'float', new type 'double'如何清除数据库或迁移成功?
我有从JSON响应中保存列表的Realm对象.但是现在我需要删除该对象,如果该对象不再从JSON列表中列出.我是怎么做到的?这是我的领域
func listItems (dic : Array<[String:AnyObject]>) -> Array<Items> {
let items : NSMutableArray = NSMutableArray()
let realm = try! Realm()
for itemDic in dic {
let item = Items.init(item: itemDic)
try! realm.write {
realm.add(item, update: true)
}
items.addObject(item)
}
return NSArray(items) as! Array<Items>
}
Run Code Online (Sandbox Code Playgroud) 我注意到访问领域对象有很多问题,我认为我的解决方案就是解决这个问题.
所以我写了这样简单的帮助方法:
public func write(completion: @escaping (Realm) -> ()) {
DispatchQueue(label: "realm").async {
if let realm = try? Realm() {
try? realm.write {
completion(realm)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为完成块会很好,因为每次我写对象或更新它时,我都使用上面的方法.
不幸的是我收到了错误:
libc++abi.dylib: terminating with uncaught exception of type realm::IncorrectThreadException: Realm accessed from incorrect thread.
Run Code Online (Sandbox Code Playgroud) 我在App Store中有一个应用程序有很多崩溃,但我不能自己重现它.我有很多崩溃日志,但它们不包含回溯,因此很难诊断问题.
崩溃日志显示CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER,这可能是由于根据SO上的其他问题将通知发送给解除分配的观察者而引起的.然而,该应用程序仅在iOS 10+上运行,并且根据Apple的说法,除非他们是块观察者,否则没有必要从iOS 9开始取消注册观察者.哪个我的应用程序不使用,因此就我自己的应用程序通知而言,这不是原因.
Incident Identifier: 77AB1312-9C1F-4BC1-957E-B742856DC635
CrashReporter Key: 6ad59ac64c53d2fc92208e8df23d4ddc8fed39fd
Hardware Model: iPhone10,3
Process: My App [378]
Path: /private/var/containers/Bundle/Application/99C2E2C8-9655-4D07-9608-870B5DD17C21/My app.app/My app
Identifier: com.myapp
OS Version: iPhone OS 10.3.2 (14F89)
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: com.myapp[498]
Date/Time: 2018-06-06 00:18:34.2085 -0700
Launch Time: 2018-06-06 00:17:39.1406 -0700
Baseband Version: 2.03.00
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib …Run Code Online (Sandbox Code Playgroud)