私は自分のアプリの 1 つに小さなオフライン データ ストレージを実装するための、簡単かつ迅速に使用できるソリューションを探していました。とにかく、これを行うためにRealmに出会いました。しかし、アプリを起動するたびにデータベースのコンテンツが null になるという問題が発生しています。
すべての割り当てを行い、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を実行するように変更しましたが、まだ機能しません。アプリ内で提供する値を取得しますが、再度アクセスすると、その値が格納されていた場合、データベースからその値をプル/フェッチしません..