私はカートに製品を保存する必要があるアプリを開発する必要があります。また、最後の最初の並べ替えの方法で最近の注文を取得する必要があります。
plistまたはSQLiteデータベースを使用してデータを保存する最善の方法はどれですか?保守が容易であるので、私は最善の方法は、あなたが最後の5つのたびにiPhoneのストレージ
1
A
答えて
1
私はこのタイプのアプリケーションを作成します。このアプリケーションでは、.plistファイルではなく操作しやすいようにSqliteデータベースを使用します。
以下は、アイテムをDBに挿入するためのコードの一部です。あなたが任意のクエリを持っている場合(NSArrayの*)arItem {
sqlite3_stmt *compiledStmt;
if(sqlite3_open([self.dbPath UTF8String], &database) ==SQLITE_OK) {
sqlite3_prepare_v2(database, "BEGIN TRANSACTION", -1, &compiledStmt, NULL);
sqlite3_step(compiledStmt);
sqlite3_finalize(compiledStmt);
const char *sqlInsertQry="insert into CartDetails (id,cat_id,KD,item,qty,calories,ar_name) values(?,?,?,?,?,?,?)";
if(sqlite3_prepare_v2(database, sqlInsertQry, -1, &compiledStmt, NULL) == SQLITE_OK){
for (NSDictionary *dObj in arItem) {
PUT_Integer(1,@"id");
PUT_Integer(2,@"Cat_Id");
PUT_Double(3,@"KD");
PUT_Value(4,@"item");
PUT_Integer(5,@"qty");
PUT_Value(6,@"calories");
PUT_Value(7,@"ar_name");
NSUInteger err = sqlite3_step(compiledStmt);
if (err != SQLITE_DONE){
NSLog(@"error while binding %d %s",err, sqlite3_errmsg(database));
}
sqlite3_reset(compiledStmt);
}
sqlite3_finalize(compiledStmt);
} else {
NSLog(@"Invalid Query");
}
sqlite3_prepare_v2(database, "END TRANSACTION", -1, &compiledStmt, NULL);
sqlite3_step(compiledStmt);
sqlite3_finalize(compiledStmt);
sqlite3_close(database);
} else {
NSLog(@"error while opening database.");
}
}
:(空)のInsertItem -
初期データベース
-(id)init{
if(self=[super init]) {
documentsDirectory_Statement;
documentsDirectory=[documentsDirectory stringByAppendingPathComponent:@"DietCenter.rsd"];
self.dbPath=documentsDirectory;
NSFileManager *fm=[NSFileManager defaultManager];
if(![fm fileExistsAtPath:self.dbPath]) {
NSString *localDB=[[NSBundle mainBundle] pathForResource:@"DietCenter" ofType:@"rsd"];
NSError *err;
if(![fm copyItemAtPath:localDB toPath:self.dbPath error:&err]){
NSLog(@"Error in creating DB -> %@",err);
}
}
if(sqlite3_open([self.dbPath UTF8String], &database) !=SQLITE_OK){
NSLog(@"error while opening database.");
} else {
sqlite3_close(database);
}
}
return self;
}
同意が
#define PUT_Value(_TO_,_FROM_) { \
NSString *str=[dObj valueForKey:_FROM_]; \
if(!str) [email protected]" "; \
sqlite3_bind_text(compiledStmt,_TO_,[str UTF8String],-1,SQLITE_TRANSIENT); \
}
#define PUT_Integer(_TO_,_FROM_) { \
NSInteger numbr=[[dObj valueForKey:_FROM_] intValue]; \
sqlite3_bind_int(compiledStmt,_TO_,numbr); \
}
#define PUT_Double(_TO_,_FROM_) { \
CGFloat doubleX=[[dObj valueForKey:_FROM_] floatValue]; \
sqlite3_bind_double(compiledStmt,_TO_,doubleX); \
}
#define GET_Value(_TO_,_FROM_) NSString *_TO_; { \
const unsigned char *c=sqlite3_column_text(compiledStmt,_FROM_); \
_TO_= c ? [NSString stringWithUTF8String:(char*)c] : @"" ; \
}
#define GET_Double(_TO_,_FROM_) double _TO_;{ \
_TO_=sqlite3_column_double(compiledStmt,_FROM_); \
}
#define GET_Integer(_TO_,_FROM_) NSUInteger _TO_; { \
_TO_ = sqlite3_column_int(compiledStmt,_FROM_); \
}
挿入値機能 値これに関連して私に助けてください助けてください
のおかげで、よろしく、サミュエル・返信用
1
は常にアプリで使用するための良い選択です。使用できるもう1つのオプションは、コアデータ機能です。
0
SQLiteにも変更されます言ったように、それ以降のデータベースに保存することだと思います
関連する問題
- 1. iPhone永続的ストレージ
- 2. iphone abourストレージのsqlite制限
- 3. USBストレージのように使うiPhoneアプリ。
- 4. iPhoneナビゲーションベースのアプリケーションに最適なストレージの選択肢は?
- 5. iPhoneのストレージに画像を保存/読み込む方法は?
- 6. メモリ効率的かつ迅速なiPhone/Androidの辞書ストレージ/アクセス
- 7. DataGridViewストレージのオーバーライド
- 8. スケジューリングアルゴリズムのストレージ
- 9. ブロックチェーン内のストレージ
- 10. Firebaseストレージのベストプラクティス
- 11. SQLiteデータベースのストレージ
- 12. NoClassDefFoundErrorがCOM /グーグル/ API /サービス/ストレージ/ストレージ$ビルダー
- 13. リアクトネイティブ:ストレージ
- 14. Kubernetes - ストレージ
- 15. Greasemonkeyストレージ
- 16. ディスクベースのドキュメントベースのストレージ
- 17. Kubernetes用の永続ストレージ(Gluster /その他のストレージ)
- 18. simulinkの可変ストレージ
- 19. LocalForageのストレージ容量
- 20. MacRuby - ストレージ用のActiveRecord?
- 21. マルチリージョンAzureストレージのデータレプリケーション
- 22. データベース内のMSMQストレージ
- 23. Android AccountManagerアカウントのストレージ
- 24. データのバッファリング/ストレージ - Python
- 25. ローカルの永続ストレージ
- 26. 最大のアプリケーションスペース(ストレージ)
- 27. CORBA COSネームサービスのストレージ
- 28. ブラックベリーの永続ストレージ
- 29. Docker上のZFSストレージ
- 30. Azure Blobストレージのトランザクションアクセス
おかげ@
... – nithin