我在几个文本文件中有很多数据文本。如何使用这些文本文件中的数据有效地创建(Realm?)数据库,以便将数据库添加到我的Xcode项目并将数据加载到我的应用程序中?
我已经看过很多关于如何使用用户输入的数据创建Realm数据库然后加载它的教程,但没有使用预先制作的数据库。我不知道Realm是否是正确的程序,但我看起来非常好。 我已经下载了Realm浏览器,但我只能查看数据库而无法找到如何轻松创建数据库。
编辑:
我设法在Realm中创建一个数据库并将其放在我的xcode文件夹中。 然后我尝试像这样加载它,但让人们不包含文件的数据,我错过了什么:
let path = NSBundle.mainBundle().pathForResource("data", ofType: "realm")
var config = Realm.Configuration(fileURL: NSURL(fileURLWithPath: path!))
config.readOnly = true
let realm = try! Realm(configuration: config)
let peoples = realm.objects(Data)
数据是定义架构的类:
class Data : Object {
dynamic var name = ""
dynamic var country = ""
dynamic var discription = ""
dynamic var image = ""
dynamic var cartoon = ""
dynamic var startYear = 0
dynamic var endYear = 0
}
感谢您的帮助!
答案 0 :(得分:4)
创建示例模型:
final class ContentModel: Object {
dynamic var title = ""
dynamic var content = ""
dynamic var listName = ""
dynamic var id = 0
override static func primaryKey() -> String? {
return "id"
}
}
创建领域数据库:
let model = ContentModel()
model.id = 1
model.listName = "List Item 1"
model.title = "Title of content 1"
model.content = "Sample Text"
// Get the default Realm
let realm = try! Realm()
// Persist your data easily
try! realm.write {
realm.add(model)
}
使用此行打印数据库路径:
print(Realm.Configuration.defaultConfiguration.fileURL!)
现在按照以下步骤(由领域解释)
以下是获取捆绑资源的代码:
open class func getBundledRealm() -> Realm {
let config = Realm.Configuration(
// Get the URL to the bundled file
fileURL: Bundle.main.url(forResource: "default", withExtension: "realm"),
// Open the file in read-only mode as application bundles are not writeable
readOnly: true)
// Open the Realm with the configuration
let realm = try! Realm(configuration: config)
return realm
}
测试您的数据库:
let realm = RealmUtils.getBundledRealm()
// Read some data from the bundled Realm
let results = realm.objects(ContentModel.self)
for item in results {
print("Id: \(item.id)")
}
答案 1 :(得分:1)
Realm Browser(顾名思义)只是一个浏览器。
对于创建预先准备好的数据库,你应该写一些代码,
创建空数据库并向其插入数据,然后将其保存到模拟器的Documents文件夹中,注释插入代码并从Documents文件夹中复制生成数据库,并将其作为资源添加到xCode项目中。
如果您的数据库是静态的,并且您不想在其上更改任何内容,只需使用资源包路径加载数据库:
[[NSBundle mainBundle] pathForResource:@"nameOfFile" ofType:@"realm"];
但如果您想要更改某些数据,则必须将其再次复制到可写文件夹,例如Documents(仅限第一次)
答案 2 :(得分:1)
我认为你所寻找的是类似的东西 Mac App Store中的https://github.com/Ahmed-Ali/JSONExport或JSONExportV 要么 http://realmgenerator.eu/
如果您已经拥有JSON,那么这些将生成您可以放入项目的Realm Models。 JSONExport支持更多语言,并且似乎对我使用Swift更好。只需确保将语言设置为" Swift - Realm"。