I was browsing around looking for a solution to implement a small offline data storage in one of my apps which would be easy and quick to use. Anyways, I came across with Realm to do this. But, I'm getting a problem that everytime I launch my app the content in the database is null.
I do all the allocation and call the beginWriteTransaction method. Set my database variable value. Then, I add the object to realm and finally commitWriteTransaction.
So, I do an NSLog to see if the value is actually set properly which it is(after updating it within my app). But when I shut down my application or stopped and run it again in the xcode iphone5 simulator. I try to set in the viewDidLoad method the value from database to a global variable in my app. Which I perform a NSLog to check if the value is either in my database or the global variable but it's display as null, meaning that is not getting store/saved.
This is the code..
@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];
}
I will also take in consideration any other options to achieve this.. Thanks!
*****UPDATE!** This is what I get in my test, which I changed to do beginWriteTransaction and commitWriteTransaction in both methods, but still doesn't work. It gets the value that I provide within my app but when I access again it doesn't pull/fetch that value from the database if it was ever store..