IOS 中如何实现数据的持久化存储?

IOS中实现数据持久化存储的主要方式有:

  1. NSUserDefaults。用于存储小量数据,数据存储在磁盘。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"some data" forKey:@"key1"];
[defaults synchronize];
  1. plist文件。用于存储面向对象数据,数据以xml格式保存在磁盘文件中。
NSDictionary *dict = @{@"key1":@"value1"};
[dict writeToFile:@"/path/to.plist" atomically:YES];
  1. Core Data。用于存储面向对象数据,数据存储在SQLite数据库文件中。
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "EntityName", in: context)
let object = NSManagedObject(entity: entity!, insertInto: context)
object.setValue(value, forKey: "propertyName")
try context.save() 
  1. Realm。是一个移动数据库,可以用于替代Core Data。数据存储在磁盘,查询和操作数据更简单高效。
// Define model 
class Dog: Object {
    @objc dynamic var name = ""
    @objc dynamic var age = 0
}

// Create realm 
let realm = try! Realm()

// Add object
let dog = Dog()
dog.name = "Rex"
dog.age = 1
try! realm.write {
    realm.add(dog)
}

// Query  
let results = realm.objects(Dog.self).filter("age > 0")
  1. SQLite。是一个自包含的关系型数据库,数据存储在磁盘文件,可以直接执行SQL语句操作。
sqlite3 *database;
sqlite3_open("/path/to.sqlite", &database);

sqlite3_stmt *statement;
sqlite3_prepare_v2(database, "SELECT * FROM table;", -1, &statement, NULL);

while (sqlite3_step(statement) == SQLITE_ROW) {
   // get row data
}