IOS DB 工具类使用
1. 定义模型
- 如下定义一个Student模型继承Object (Realm提供的基类)
class Book: Object {
@objc dynamic var name = ""
@objc dynamic var author = ""
let owners = LinkingObjects(fromType: Student.self, property: "books")
convenience init(name : String,author : String) {
self.init();
self.name = name;
self.author = author;
}
}
class Student: Object {
@objc dynamic var name = ""
@objc dynamic var age = 18
@objc dynamic var weight = 156
@objc dynamic var id = 0
@objc dynamic var address = ""
@objc dynamic var birthday : NSDate? = nil
@objc dynamic var photo : NSData? = nil
@objc dynamic var tempID : String? = nil
@objc dynamic var tempID2 : String? = nil
@objc dynamic var groupName : String? = nil
let books = List<Book>()
override static func primaryKey() -> String? {
return "id"
}
override static func ignoredProperties() -> [String] {
return ["tempID"]
}
override static func indexedProperties() -> [String] {
return ["name"]
}
}
2. 新增记录
private func insertStudent(by student : Student) -> Void {
KRealmManager.add(student)
}
private func insertStudents(by students : [Student]) -> Void {
KRealmManager.addListData(students)
}
- 调用
KRealmManager.add(student)
如果没有新建表,会自动创建一个跟student模型属性对应表(被忽略的属性,或计算型属性不会创建表字段)。
3. 更新记录
public class func updateStudent(student : Student) {
KRealmManager.addCanUpdate(student)
}
public class func updateStudent(students : [Student]) {
let defaultRealm = KRealmManager.sharedInstance
try! defaultRealm.write {
defaultRealm.add(students, update: .all)
}
}
public class func updateStudentAge(age : Int) {
let defaultRealm = KRealmManager.sharedInstance
try! defaultRealm.write {
let students = defaultRealm.objects(Student.self)
students.setValue(age, forKey: "age")
}
}
4. 删除记录
public class func deleteStudent(student : Student) {
let defaultRealm = KRealmManager.sharedInstance
try! defaultRealm.write {
defaultRealm.delete(student)
}
}
public class func deleteStudent(students : [Student]) {
KRealmManager.delete(students)
}
5. 查询记录
public class func getStudents() -> [Student] {
let results = KRealmManager.selectByAll(Student.self)
var students = [Student]()
results.forEach { (item) in
students.append(item)
}
return students
}
public class func getStudent(from id : Int) -> Student? {
return KRealmManager.select(type: Student.self, by: "\(id)")
}
public class func getStudentByTerm(_ term: String) -> [Student] {
let results = KRealmManager.selectByNSPredicate(Student.self, predicate: NSPredicate(format: term))
var students = [Student]()
results.forEach { (item) in
students.append(item)
}
return students
}
public class func getStudentByIdSorted(_ isAscending: Bool) -> [Student] {
let results = KRealmManager.selectScoretByAll(Student.self, key: "id", isAscending: isAscending)
var students = [Student]()
results.forEach { (item) in
students.append(item)
}
return students
}