我需要開發一個應用程序,我需要將產品存儲到購物車中。還需要以最後一種排序方式檢索最近的訂單。
哪個是存儲數據的最佳方式 - 使用plist或SQLite數據庫?iPhone中的存儲
1
A
回答
1
我創建了這種類型的應用程序,在該應用程序中,我使用Sqlite數據庫來輕鬆操作而不是.plist文件。
以下是將項目插入到數據庫中的一些代碼量。
初始化數據庫
-(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_); \
}
值插入功能 - (空)insertItem:(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.");
}
}
如果您有任何疑問相關這個請告訴我我幫你ü
感謝和問候,
@塞繆爾
1
我認爲最好的方法就是像你說的過去的五年將在每個
0
SQLite是始終處於應用程序使用,因爲它很容易保持一個不錯的選擇時間改變,因爲它的數據庫來保存。核心數據功能還可以使用另外一個選項。
相關問題
- 1. iPhone中的存儲參數
- 2. NSDefaults存儲iphone?
- 3. 在iPhone中存儲數據
- 4. 存儲問題永久存儲iphone
- 5. 如何訪問iPhone中存儲的iPhone iPhone SDK
- 6. 的Web SQL存儲在iPhone
- 7. 在iPhone中存儲數據的位置?
- 8. tmp目錄中的iPhone存儲
- 9. Xcode中的iPhone存儲和檢索
- 10. 在iphone iphone創新存儲集成
- 11. 存儲300條記錄iPhone
- 12. 存儲與CvMat對象iPhone
- 13. iPhone存儲器泄漏
- 14. findig和存儲在iPhone
- 15. 將圖像存儲到iphone
- 16. iPhone存儲大量圖片
- 17. iPhone永久存儲器
- 18. 在iPhone中存儲默認值
- 19. 從UIImagePickerController在iPhone中存儲圖像?
- 20. iphone - 在tableview中存儲id /值對
- 21. 在變量中存儲navigation.title iphone
- 22. SQLite中臨時表存儲在iPhone上
- 23. 在NSDictionary中存儲imageView iphone sdk
- 24. 在Iphone中存儲和檢索緩存中的數據
- 25. iPhone內存泄漏與存儲套件
- 26. iPhone的唯一ID最好保存在持久存儲中?
- 27. iPhone的圖像仍然存儲在內存中?
- 28. iPhone應用程序的數據存儲
- 29. iPhone:無法存儲到NSUserDefaults的NSMutableDictionary
- 30. iphone-存儲數據的最佳方式
感謝回答... – nithin 2012-02-15 05:41:41