我想在我的领域数据库中使用预填充数据来交付我的应用程序。我只需要将其简单复制到文档目录中吗?还是还有其他事情要做?
我想在我的领域数据库中使用预填充数据来交付我的应用程序。我只需要将其简单复制到文档目录中吗?还是还有其他事情要做?
Realm的文档中有一节关于"将Realm与应用程序捆绑在一起":
常见的做法是在应用程序中添加初始数据,使其在用户首次启动时立即可用。以下是如何实现此操作:为Android预填充Realm数据库
将您的Realm数据库放入res/raw文件夹中
并在活动中执行以下代码:
// 复制Realm数据库
copyBundledRealmFile(this.getResources().openRawResource(R.raw.default0), "default0.realm");
RealmConfiguration config0 = new RealmConfiguration.Builder()
.name("default0.realm")
.build();
realm = Realm.getInstance(config0);
private String copyBundledRealmFile(InputStream inputStream, String outFileName) {
try {
File file = new File(this.getFilesDir(), outFileName);
FileOutputStream outputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buf)) > 0) {
outputStream.write(buf, 0, bytesRead);
}
outputStream.close();
return file.getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
let realm = try! Realm()
lazy var data: Results<MyModel> = { self.realm.objects(MyModel.self) }()
func populateDefaultData() {
if yourdata.count == 0 {
try! realm.write() {
let defaultData = ["Data1", "Data2", "Data3"]
for data in defaultData {
let newData = MyModel()
newData.data = data
realm.add(newData)
}
}
data = realm.objects(MyModel.self)
}
}
override func viewDidLoad() {
super.viewDidLoad()
populateDefaultData()
}