嗨,我正在与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提前!
从昨天开始,我找不到:io.realm:realm-android:0.71.0.
这是我的依赖:
dependencies {
...
compile 'io.realm:realm-android:0.71.0'
...
}
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?
该项目之前编制完美.从那时起发生了什么变化:
日志:FAILURE:构建因异常而失败.
无法解析配置':app:_paidDebugCompile'的所有依赖项.找不到io.realm:realm-android:0.73.1.在以下位置搜索: https://repo1.maven.org/maven2/io/realm/realm-android/0.73.1/realm-android-0.73.1.pom https://repo1.maven.org/maven2/io/realm/realm-android/0.73.1/realm-android-0.73.1.jar 文件:/ C:/Users/thomasbeerten/.m2/repository/io/ realm/realm-android/0.73.1/realm-android-0.73.1.pom文件:/ C:/Users/thomasbeerten/.m2/repository/io/realm/realm-android/0.73.1/realm-android- 0.73.1.jar http://download.crashlytics.com/maven/io/realm/realm-android/0.73.1/realm-android-0.73.1.pom http://download.crashlytics.com/maven/io/realm/realm-android/0.73.1/realm-android-0.73.1.jar 文件:/ C:/ Users/thomasbeerten/sdk backup/sdk/extras/android/m2repository/io/realm/realm-android/0.73.1/realm -and-roid-0.73.1.pom文件:/ C:/ Users/thomasbeerten/sdk backup/sdk/extras/android/m2repository/io/realm /realm-android/0.73.1/realm-and roid-0.73.1.jar文件:/ C:/ Users/thomasbeerten/sdk backup/sdk/extras/google/m2repository/io/realm/realm-android/0.73. 1/realm-andr oid-0.73.1.pom文件:/ C:/ Users/thomasbeerten/sdk backup/sdk/extras/google/m2repository/io/realm/realm-android/0.73.1/realm-andr oid- 0.73.1.jar要求:YoMommaOClock:app:未指定
正如你看到下面我有2张境界子Dog和Cag,它含有不同量的对象.我想检索这些对象并将它们一起添加到一个数组中,这样我就可以运行了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) 可以通过Realm Java创建"领域"并由Realm for iOS(8)读取吗?Realm Databasing系统如何兼容跨平台?我有一个移动应用程序的想法,我想创建一个标准java类的"领域" - 可能是一个网站的幕后功能 - 然后让移动应用程序检索'领域'并阅读它的数据.(我希望这是有道理的.)
在后台异步保存对象时,我得到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>集合中选择.
这是我的目标:
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) 说我有一堂课:
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中检索整个公司,并反复在成员列表中搜索匹配项,但这似乎不是最好的方法。
我正在使用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应用程序要发布,今天尝试运行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) 我正在使用带有普通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) realm ×10
android ×6
java ×4
swift ×3
dagger-2 ×1
database ×1
encryption ×1
inheritance ×1
ios ×1
ios8 ×1
objective-c ×1