我正在尝试向Realm对象UserDetails添加一个新属性。这是我的尝试:
class CustomerDetails: Object {
dynamic var customer_id = 0
dynamic var customer_name = ""
}
现在我需要添加一个新属性" company_name"到之前已经创建的UserDetails对象。如何向现有的Realm对象添加新的?
答案 0 :(得分:6)
两种方法:
只需从模拟器中删除您的应用并再次运行即可。每次更改Realm对象的属性时,现有数据库都会与新数据库不兼容。 只要您还处于开发阶段,您只需从模拟器/设备中删除该应用程序并再次启动即可。
在AppDelegate的disFinishLaunchWithOptions方法中编写此代码:
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QDir, QUrl
import plotly
import plotly.graph_objs as go
sys.argv.append("--disable-web-security")
app = QApplication(sys.argv)
x1 = [10, 3, 4, 5, 20, 4, 3]
trace1 = go.Box(x = x1)
layout = go.Layout(showlegend = True)
data = [trace1]
fig = go.Figure(data=data, layout = layout)
path = QDir.current().filePath('plotly-latest.min.js')
local = QUrl.fromLocalFile(path).toString()
raw_html = '<html><head><meta charset="utf-8" />'
raw_html += '<script src="{}"></script></head>'.format(local)
raw_html += '<body>'
raw_html += plotly.offline.plot(fig, include_plotlyjs=False, output_type='div')
raw_html += '</body></html>'
view = QWebEngineView()
view.setHtml(raw_html)
view.show()
sys.exit(app.exec_())
我建议你按照第二个。
答案 1 :(得分:4)
您只需将属性添加到Realm模型,但必须提供migration才能将存储的数据更新为新格式。
这包括在schemaVersion
中设置Realm.Configuration
,告诉Realm架构已更改,并提供migrationBlock
初始化现有对象的新属性(可能只需设置一个空字符串)。在下一次启动应用程序时,Realm将自动运行迁移,从而将存储的数据更新为新架构。