我创建了一个名为RealmRepo的通用类,该类接收从Object扩展的类型,因此可以由Realm进行操作。它的用法很简单:
假设有一个从Object扩展的User类。
string fName = @hdfRuta.Value; //Ruta donde se encuentra el archivo txt Ejm: c:\log\log21082018.txt
System.IO.FileStream fs = System.IO.File.Open(fName,
System.IO.FileMode.Open);
byte[] btFile = new byte[fs.Length];
fs.Read(btFile, 0, Convert.ToInt32(fs.Length));
fs.Close();
Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment; filename=" + hdfNombreArchivo.Value); //hdfNombreArchivo: Nombre del archivo .txt a generarse Ejm: Log_21_08_2018.txt
EnableViewState = false;
Response.ContentType = "text/plain";
Response.BinaryWrite(btFile);
Response.End();
protected void btnBajarLog_PreRender(object sender, EventArgs e)
{
Button btn = (Button)sender;
ScriptManager newScriptManager =
(ScriptManager)Page.FindControl("scmRegistroMasivoEvento");
newScriptManager.RegisterPostBackControl(btn);
}
然后,如果我想使用RealmRepo类,我要做的就是:
class User: Object {
@objc dynamic var name: String = "User"
}
到目前为止,该实现有效并且满足了我的需求,但事实是,我确信这可以通过更好的方式完成,并且我希望收到有关如何执行此操作的评论。
我发现的主要“问题”是使用let newUser = User()
RealmRepo<User>.add(item: newUser)
RealmRepo<User>.add(item: [newUser])
let allUsers = RealmRepo<User>.getAll()
let firstUser = RealmRepo<User>.getFirst()
let nameToFilterBy = "User"
let userByName = RealmRepo<User>.getBy("name", nameToFilterBy)
RealmRepo<User>.deleteAll()
协议以及如何区分Addable
是Item
还是不存在。我复制了无法解耦的代码。
因此,非常感谢您了解如何改进PrimaryKeyable
协议及其实现的任何技巧。
RealmRepo实现:
Addable