标签: realm

对象已经存在于Realm中

嗨,我正在与Realm进行一个项目,现在使用它的新版本,我不断得到"对象已经存在于一个领域"

发生这种情况是因为我试图将已存在的对象保存在不同的领域.(这是我在阅读文档后得到的结论)

但实际上我只有一个领域,默认领域.

对于每个添加或更新做领域,我正在创建一个线程.在那个帖子上我有:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    RLMRealm *realm = [RLMRealm defaultRealm];
    [realm beginWriteTransaction];

    NSString *PlaceId = [placeInfoDic objectForKey:@"PlaceId"];
    RLMArray *placeArr = [Place objectsWhere:@"PlaceId = %@",PlaceId];

    Place *place;

    if (placeArr.count > 0) {
        place = [placeArr objectAtIndex:0];
    }
    else {
        place = [[Place alloc] init];
        place.PlaceId = PlaceId;
    }

    [realm addOrUpdateObject:place];
    [realm commitWriteTransaction];
});
Run Code Online (Sandbox Code Playgroud)

PlaceId是我模型的主键.

Thx提前!

objective-c realm

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

找不到:io.realm:realm-android:0.71.0

从昨天开始,我找不到:io.realm:realm-android:0.71.0.

这是我的依赖:

dependencies {
...
   compile 'io.realm:realm-android:0.71.0'
...
}
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?

该项目之前编制完美.从那时起发生了什么变化:

  • 添加了Crashlytics
  • Bumped buildtoolsversion:buildToolsVersion"21.1.0"

日志:FAILURE:构建因异常而失败.

realm android-studio

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

将继承领域对象合并在一起

正如你看到下面我有2张境界子DogCag,它含有不同量的对象.我想检索这些对象并将它们一起添加到一个数组中,这样我就可以运行了sortPetByDate.但是我不能appendTheContentOf,因为事实

let cat = realm.objects(Cat)
let dog = realm.objects(Dog)
Run Code Online (Sandbox Code Playgroud)

回报Results<t>.

在多个继承对象上运行此方法的最佳方法是什么?

func sortPetByDate(array:[AnyObject]) -> [AnyObject]     {
    return array.sort{ ($0.0 as! Pet).date.compare(($0.1 as! Pet).date) == NSComparisonResult.OrderedAscending }
}
Run Code Online (Sandbox Code Playgroud)

我的继承类的示例:

class Pet: Object {
    dynamic var date = NSDate()
    dynamic var title = String()
}

class Dog: Pet {
}

class Cat: Pet {
}
Run Code Online (Sandbox Code Playgroud)

inheritance realm ios swift

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

领域数据库跨平台兼容性?

可以通过Realm Java创建"领域"并由Realm for iOS(8)读取吗?Realm Databasing系统如何兼容跨平台?我有一个移动应用程序的想法,我想创建一个标准java类的"领域" - 可能是一个网站的幕后功能 - 然后让移动应用程序检索'领域'并阅读它的数据.(我希望这是有道理的.)

java android realm swift ios8

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

在后台线程中保存对象时的RLMException

在后台异步保存对象时,我得到RLMException:'无法添加来自不同Realm的对象'.但是,如果删除异步代码,相同的保存工作正常.

该对象与现有对象有关系.例如:

class Person: Object {
  name: String
  school: School
}

class School: Object {
  name: String
}

let person = new Person()
person.name = "John"
person.school = school // Existing object selected from a dropdown.

DispatchQueue.global().async {
    do {
        let realm = try Realm!

        try realm.write {
            realm.add(person, update: true)
        }

        DispatchQueue.main.async {
            // Success!
        }
    } catch let error as NSError {
        DispatchQueue.main.async {
            // Error!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码导致崩溃.但是,如果我删除DispatchQueye.global().async,一切正常.我遇到了一些线程问题吗?

注意:该school对象是预先存在的,并从Results<School>集合中选择.

realm swift realm-mobile-platform

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

Java android领域检查对象是否存在(检查两个)

这是我的目标:

public class ObjectsInGroupRealm extends RealmObject {

    @PrimaryKey
    private Long id;
    private String name;
    private String groupName;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我创建一个新对象时,我想检查对象是否存在同一个名称和同一个groupName.对象名称可以在几个组中.这是我保存对象的代码:

 public static void saveObjectsInGroup(ArrayList<String> objects, String groupName , Realm realm){

        for(String object : …
Run Code Online (Sandbox Code Playgroud)

java android realm

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

如何在单个查询中搜索RealmObject的RealmList字段

说我有一堂课:

public class Company extends RealmObject {

    private String companyId;
    private RealmList<CompanyMember> companyMembers;

}
Run Code Online (Sandbox Code Playgroud)

CompanyMember类如下所示:

public class CompanyMember extends RealmObject {

    private String id;
    private String name;

}
Run Code Online (Sandbox Code Playgroud)

是否可以使用单个查询在领域中基于CompanyMember对象的“名称”字段搜索特定Company对象的“ companyMembers”列表?

例如,在公司123的CompanyMember列表中搜索名称包含“ abc”的所有CompanyMember,然后返回这些匹配的CompanyMembers的列表。

目前,我正在从Realm中检索整个公司,并反复在成员列表中搜索匹配项,但这似乎不是最好的方法。

java database android realm

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

Dagger 2 - 我应该使用单身Realm实例吗?

我正在使用Dagger 2为整个应用程序提供单例Realm实例(所有数据访问对象都使用单个域).但是,据我所知,Realm可以使用多实例Realm.getInstance(),我们必须在完成它们时关闭每个实例,如Realm docs所示:

    /**
     * Closes the Realm instance and all its resources.
     * <p>
     * It's important to always remember to close Realm instances when you're done with it in order not to leak memory,
     * file descriptors or grow the size of Realm file out of measure.
     *
     * @throws IllegalStateException if attempting to close from another thread.
     */
    @Override
    public void close() {
        if (this.threadId != Thread.currentThread().getId()) {
            throw new IllegalStateException(INCORRECT_THREAD_CLOSE_MESSAGE);
        }

        if …
Run Code Online (Sandbox Code Playgroud)

android realm dagger-2

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

Android API 22 | java.security.NoSuchAlgorithmException:未找到KeyGenerator RSA实现

我有一个Android应用程序要发布,今天尝试运行API 22的设备Moto G,我遇到了以下错误:

java.security.NoSuchAlgorithmException: 未找到KeyGenerator RSA 实现

众所周知,相同的应用程序在较新的设备API 23+上正常运行

查询Google文档,我发现自API +1以来支持AES算法,我不明白发生了什么.

有没有人遇到过这个问题?

顺便说一句,我正在尝试生成加密Realm数据的密钥.

private static final String KEYSTORE_PROVIDER_NAME = "AndroidKeyStore";
public void generateKeyInKeystore() {
        final KeyGenerator keyGenerator;
        try {
            keyGenerator = KeyGenerator.getInstance(
                    KeyProperties.KEY_ALGORITHM_AES,
                    KEYSTORE_PROVIDER_NAME);
        } catch (NoSuchAlgorithmException | NoSuchProviderException e) {
            throw new RuntimeException(e);
        }

        final KeyGenParameterSpec keySpec;

        try {
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                keySpec = new KeyGenParameterSpec.Builder(
                        KEY_ALIAS,
                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                        .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
                        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
                        .setUserAuthenticationRequired(false)
                        .build();
                keyGenerator.init(keySpec);
            }
        } catch (InvalidAlgorithmParameterException e) {
            throw new RuntimeException(e);
        }
        keyGenerator.generateKey(); …
Run Code Online (Sandbox Code Playgroud)

java encryption android realm

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

将recyclerview项目限制为仅10,而不使用过滤器进行分页

我正在使用带有普通TextView的283项的Recycler View来过滤列表.

我想一直只显示10条记录.

我不能使用getCount(或GetItemCount)因为当我过滤列表它给我IndexOutOfBoundsExceptions时,有没有其他方法可以做到这一点?

public class RealmAutoCompleteAdapter extends RecyclerView.Adapter<RealmAutoCompleteAdapter.ProductViewHolder>  {
Realm realm;

RealmChangeListener<RealmResults<FieldsItem>> realmChangeListener;
RealmResults<FieldsItem> items;
String searchTerm;

public RealmAutoCompleteAdapter(Realm realm, RealmResults<FieldsItem> items) {
    this.realm = realm;
    this.realmChangeListener = new RealmChangeListener<RealmResults<FieldsItem>>() {
        @Override
        public void onChange(RealmResults<FieldsItem> results) {
            notifyDataSetChanged();
        }
    };
    this.items = items;
    items.addChangeListener(realmChangeListener);
}

@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    return new ProductViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.autocomplete_row, parent, false));
}

@Override
public void onBindViewHolder(ProductViewHolder holder, int position) {
    FieldsItem item = items.get(position);
    holder.title.setText(item.getTitle());
}

public void updateInput(String input) {
    this.searchTerm …
Run Code Online (Sandbox Code Playgroud)

android realm android-recyclerview

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