接手了一个用纯swift3.0的项目,前iOS开发了不到一个月走了。留了一堆坑,填坑中
写入:
if let transformModel =Mapper().map(JSONObject: data) {
let realm =try! Realm()
try! realm.write{
realm.add(transformModel, update:true)
}
println(transformModel)
}
更新:
let realm =try!Realm()
letUserInfo = realm.objects(UserBaseInfoModel.self).first
try! realm.write{
UserInfo?.name=nameLable.text!
}
遇到的一些坑或者不爽的地方
1.当然,这么一个还算比较新的工具说是完美的肯定是不可能,我在使用中也在经常地骂娘,虽然后来发现好多是使用姿势不对23333
2..Realm是C++实现的,所以看着一堆.mm的源码,对我来说基本不会产生去阅读.的想
注意点:
1.RealmObject自带线程保护功能,只能在创建它的线程中访问,在子线程中不能访问。
2.如果Realm关闭,所有查询得到的RealmObject都不能使用了。
3.如果想在Realm.close()之后继续操作查询得到的对象,只能复制一份数据传出来。
4.如果直接修改或删除query得到的数据,必须在transaction中完成...
5.读取之前要判断是否为空
//用户信息:
func getUserInfo() -> UserBaseInfoModel{
if try! Realm().isEmpty {
let UserInfo = UserBaseInfoModel()
return UserInfo
}else{
let UserInfo: Results<UserBaseInfoModel>! = try! Realm().objects(UserBaseInfoModel.self)
return UserInfo.first!
}
}
持续菜坑中。。。