分組揹包+樹上DP
阿新 • • 發佈:2022-03-24
應用沙盒
在想要本地儲存資料之前,那就要知道一下什麼是應用沙盒 ,其實很好理解應用沙盒就是應用的資料夾,與其他檔案系統隔離。每一個iOS應用都有自己的應用沙盒,應用必須待在自己的沙盒裡,其它應用不能訪問該沙盒。
沙盒結構
- Documents :儲存應用執行時生成的需要持久化的資料,iTunes同步裝置時會備份該目錄。例如,遊戲應用可將遊戲存檔儲存在該目錄
- Library/Caches : 儲存應用執行時生成的需要持久化的資料,iTunes同步裝置時不會備份該目錄。一般儲存體積大、不需要備份的非重要資料
-
Library/Preference : 儲存應用的所有偏好設定,iOS的Settings(設定)應用會在該目錄中查詢應用的設定資訊。iTunes同步裝置時會備份
- tmp : 儲存應用執行時所需的臨時資料,使用完畢後再將相應的檔案從該目錄刪除。應用沒有執行時,系統也可能會清除該目錄下的檔案。iTunes同步裝置時不會備份該目錄
資料儲存方式
1.NSUserDefaults
NSUserDefaults單例,儲存在偏好設定裡,它可以用來儲存使用者的偏好設定,例如:使用者名稱,字型的大小,使用者的一些設定等。
2.plist檔案
plist的根Type只能是字典(NSDictionary)或者是陣列(NSArray)所以歸檔時我們只能將陣列或字典儲存到plist檔案中,但是NSString也能通過歸檔儲存到plist檔案中同時它也可以通過stringWithContentsOfFile解檔,它儲存到plist中時Type是空的,Value是有值的!
4.FMDB iOS中使用C語言函式對原生SQLite資料庫進行增刪改查操作,複雜麻煩,於是,就出現了一系列將SQLite API封裝的庫,如FMDB
FMDB是針對libsqlite3框架進行封裝的三方,它以OC的方式封裝了SQLite的C語言的API,使用步驟與SQLite相似 FMDB的優點是:
(1) 使用時面向物件,避免了複雜的C語言程式碼
(2) 對比蘋果自帶的Core Data框架,更加輕量級和靈活
(3) 提供多執行緒安全處理資料庫操作方法,保證多執行緒安全跟資料準確性
FMDB缺點:
(1) 因為是OC語言開發,只能在iOS平臺上使用,所以實現跨平臺操作時存在限制性 5.coreData 1.什麼是coreData
- iOS開發中實現資料持久化儲存的⼀一種重要⼿段。
- CoreData提供了物件-關係對映的功能,能將 Objective-c的物件使⽤資料庫或者XML等⽅式 儲存。
- 如果使⽤用CoreData將資料存到資料庫中,不⽤通過sql語句來操作資料
1)NSManagedObjectModel,
作用:用來載入 coreData資料模型⽂件,所有的資料模型可以 全部載入到此物件中。
2)NSManagedObjectContext,
作用:⽤於操作資料 模型(物件),並監測資料模型(物件)的變化。
3)NSPersistentStoreCoordinator,
作用:資料持久化儲存協調器,負責排程上層與底層對資料的操作。
4)NSManagedObject,
作用:具體的資料模型物件
5)NSEntityDescription,
作用:模型描述類,能夠 例項化得到具體的資料模型物件
coreData的使用
1.插入資料
1)+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;
作用:例項化一個數據模型
- (BOOL)save:(NSError **)error;
作用:儲存到本地
2.查詢資料
1)NSFetchRequest,
作用:資料查詢請求類
2)NSPredicate,
作用:通過謂詞設定查詢條件的類
3)NSSortDescriptor
作用:按條件排序查詢結果
3.更新資料(建立在查詢資料之上)
4.刪除資料(建立在查詢資料之上)
- (void)deleteObject:(NSManagedObject *)object;
coreData和KVC技術的結合
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues;
如果資料庫儲存的型別和提供的資料型別不一致,必須重寫此方法