我正在四处寻找一种解决方案,以在我的一个应用程序中实现小型离线数据存储,该应用程序使用起来既简单又快速。无论如何,我遇到了Realm来做这件事。但是,我遇到了一个问题,每次我启动我的应用程序时,数据库中的内容都是空的。
我完成所有分配并调用beginWriteTransaction方法。设置我的数据库变量值。然后,我将对象添加到领域,最后是 commitWriteTransaction。
所以,我做了一个NSLog来查看该值是否实际设置正确(在我的应用程序中更新它之后)。但是当我关闭我的应用程序或停止并在 xcode iphone5 模拟器中再次运行它时。我尝试在 viewDidLoad 方法中将数据库中的值设置为我的应用程序中的全局变量。我执行一个 NSLog 来检查该值是在我的数据库中还是在全局变量中,但它显示为 null,这意味着它没有被存储/保存。
这是代码..
@interface iReceiptDataBase : RLMObject
@property NSString* receiptNo;
@end
RLM_ARRAY_TYPE(iReceiptDataBase)
@implementation iReceiptDataBase
@end
//******** View Controller Implementation ************
- (void)viewDidLoad {
self.realm = [RLMRealm defaultRealm]; // property type RLMRealm
[realm beginWriteTransaction];
self.myDataBase = [[iReceiptDataBase alloc] init]; // property type iReceiptDataBase
receiptNumber = [myDataBase.receiptNo intValue];
NSLog(@"In my realm database(first call) -> %@", myDataBase.receiptNo);
NSLog(@"In my local app(first call) -> %d", receiptNumber);
}
-(void)drawPDF:(NSString*)fName {
receiptNumber += 1; // property type int
myDataBase.receiptNo = [NSString stringWithFormat:@"%d", receiptNumber];
NSLog(@"In my realm database(second call) -> %@", myDataBase.receiptNo);
}
- (void)viewWillDisappear:(BOOL)animated {
[realm addObject:myDataBase];
[realm commitWriteTransaction];
}
我还将考虑实现这一目标的任何其他选择。谢谢!
*****更新!** 这是我在测试中得到的结果,我将其更改为在两种方法中执行beginWriteTransaction和commitWriteTransaction,但仍然不起作用。它获取我在我的应用程序中提供的值,但是当我再次访问它时,它不会从数据库中提取/获取该值(如果它曾经存储过的话)。