如何创建预先准备好的数据库,然后在我的ios swift应用程序中加载该数据?

时间:2016-05-02 16:30:07

标签: ios database swift realm

我在几个文本文件中有很多数据文本。如何使用这些文本文件中的数据有效地创建(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
}

我尝试加载的域文件的图像: enter image description here

感谢您的帮助!

3 个答案:

答案 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!)

现在按照以下步骤(由领域解释)

  1. 将Realm文件的新压缩副本拖到最终应用程序的Xcode Project Navigator中。
  2. 转到Xcode中的应用目标的构建阶段选项卡,并将Realm文件添加到“复制捆绑资源”构建阶段。
  3. 此时,您的应用可以访问您的捆绑Realm文件。您可以使用NSBundle.main.pathForResource(_:ofType :)来找到它的路径。
  4. 以下是获取捆绑资源的代码:

    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"。