【发布时间】:2015-10-24 06:55:34
【问题描述】:
我正在研究如何在我的新项目中使用 Realm DB,但遇到了一些问题。请分享您在 Realm DB 工作时的经验。很抱歉我的问题列表很长。
首先请参考my sample code
狗类
Dog.h
@interface Dog : RLMObject
@property NSString *name;
@property NSInteger age;
@end
RLM_ARRAY_TYPE(Dog) // define RLMArray<Dog>
还有人类
Person.h
@interface Person : RLMObject
@property NSString *name;
@property NSInteger age;
// to-many relationship
@property RLMArray<Dog *><Dog> *dogs;
@end
RLM_ARRAY_TYPE(Person) // define RLMArray<Person>
然后,我为人和狗创建数据(1000000 条记录)- 1 个人将拥有 1 条狗。在某些情况下我被卡住了
- 如何让人们拥有名为“Rex”的狗?我对其进行了研究,但没有针对目标 C 的指南
-
删除对象的性能似乎很慢 我试图删除一个名为“Ethan”的人,当它执行半个列表时性能很慢并且应用程序崩溃。我想我使用了不正确的方式来删除对象。
RLMResults *people = [Person objectsWhere:@"name == 'Ethan'"]; // Get the default Realm RLMRealm *realm = [RLMRealm defaultRealm]; [realm beginWriteTransaction]; for (int i=0; i< people.count; i++) { Person *aPerson = [people objectAtIndex:i]; [realm deleteObject:aPerson]; } [realm commitWriteTransaction];
结果是 >52000 条记录,名称为“Ethan”,应用仅删除其中一半(26000)
-
我不知道如何使用 Realm 删除有条件的记录。我想我会为我的问题 #2 编写如下代码
[Person deleteWhereObject:@"name = 'Ethan'"]; -
目前尚不清楚在创建数据库后如何重命名、删除或添加新列(除了使用最简单的方法,即删除数据库并重新创建它)
用于浏览在桌面上创建的数据文件的工具(Realm 浏览器)在查询数据方面没有提供很大的灵活性。它只允许浏览数据,但不允许使用特定条件进行查询。如果我丢失了东西,请指导我使用这个工具查询数据。
对于故障排除,我可能有来自客户端应用程序的现有数据库,我想将其导入我的项目中以解决客户端的错误。那么,如何使用 Realm DB 做到这一点?
-
在 Person 和 Dog 表插入 1000000 条记录后,DB 大小为 52.8 MB。但是在我调用删除所有数据后,数据库大小增加到 92.3 MB
// delete all object [realm beginWriteTransaction]; [realm deleteAllObjects]; [realm commitWriteTransaction];
然后,我再次插入数据,文件大小继续增加。我不知道我的步骤出了什么问题。
希望尽快得到您的支持!
【问题讨论】:
标签: realm