更新:
自发布以来,添加了一个新方法来删除所有对象(正如 jpsim 已经提到的):
// Obj-C
[realm beginWriteTransaction];
[realm deleteAllObjects];
[realm commitWriteTransaction];
// Swift
try! realm.write {
realm.deleteAll()
}
请注意,这些方法不会改变数据结构;他们只删除现有记录。如果您希望在不编写迁移的情况下更改领域模型属性(即,就像您在开发中所做的那样),下面的旧解决方案可能仍然有用。
原答案:
您可以简单地删除领域文件本身,就像他们在存储 REST 响应的示例代码中所做的那样:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//...
// Ensure we start with an empty database
[[NSFileManager defaultManager] removeItemAtPath:[RLMRealm defaultRealmPath] error:nil];
//...
}
关于您的评论的更新:
如果您需要确保不再使用领域数据库,您可以使用领域的通知。如果您要openWrites
在每次写入之前增加一个计数器,那么您可以在每次写入完成时运行一个块:
self.notificationToken = [realm addNotificationBlock:^(NSString *notification, RLMRealm * realm) {
if([notification isEqualToString:RLMRealmDidChangeNotification]) {
self.openWrites = self.openWrites - 1;
if(!self.openWrites && self.isUserLoggedOut) {
[[NSFileManager defaultManager] removeItemAtPath:[RLMRealm defaultRealmPath] error:nil];
}
}
}];