import UIKit
import Realm
import RealmSwift
class Employee: Object {
dynamic var name = ""
dynamic var salary = 0
}
class Emp: Object{
dynamic var name = ""
dynamic var salary = ""
}
class RealMEx: UIViewController,UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var txt1: UITextField!
@IBOutlet weak var txt2: UITextField!
@IBOutlet weak var tblView: UITableView!
var dataArry = [[String: Any]]()
@IBAction func Submit(_ sender: UIButton) {
let emp = Employee()
emp.name = txt1.text!
emp.salary = Int(txt2.text!)!
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
realm.add(emp)
}
let data = realm.objects(Employee.self)
for i in Array(data){
let d = ["name":i["name"]!,"salary": i["salary"]!]
dataArry.append(d as [String : Any])
}
print (Array(data))
tblView.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
tblView.delegate = self
tblView.dataSource = self
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArry.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath)as! RealMTableCell
cell.lbl.text = dataArry[indexPath.row]["name"] as? String
cell.sallbl.text = dataArry[indexPath.row]["salary"] as? String
return cell
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我正在尝试创建简单的realm对象来存储和检索数据,所以我首先编写了这段代码,首先我使用了两个不同的数组来存储我的数据,但后来我为此采用了关联数组 . 但是使用关联数组我不能在表视图中打印我的“薪水” . 所以我拿了另一个名为“Emp”的类并运行我的代码,但之后它显示了我的错误 .
2017-09-25 10:54:07.218441 0530 NewLogin [2264:51915] [MC] systemgroup.com.apple.configurationprofiles路径的系统组容器是/ Users / admin / Library / Developer / CoreSimulator / Devices / 9F794470-A0F6 -4D8F-8A4C-9CBF6852EE71 / data / Containers / Shared / SystemGroup / systemgroup.com.apple.configurationprofiles 2017-09-25 10:54:07.239924 0530 NewLogin [2264:51915] [MC]从私人有效用户设置读取 . 2017-09-25 10:54:18.146 NewLogin [2264:52118] Realm版本2.10.1现已推出:https://github.com/realm/realm-cocoa/blob/v2.10.1/CHANGELOG.md致命错误:'试试!'表达式意外地引发了错误:Error Domain = io.realm Code = 10“由于以下错误,需要迁移: - 属性'Employee.salary'已从'int'更改为'string' . ” UserInfo = {NSLocalizedDescription =由于以下错误而需要迁移: - 属性'Employee.salary'已从'int'更改为'string' . ,错误代码= 10}:file /Library/Caches/com.apple . xbs / Sources / swiftlang / swiftlang-802.0.53 / src / swift / stdlib / public / core / ErrorType.swift,第182行
2 回答
看着:
最直接的问题似乎是Realm模型自创建Realm文件(保存到磁盘)后发生了变化 . 你需要执行Migration .
此外,似乎有更新版本的Realm可用,您应该考虑更新 .
您需要定义迁移块并执行迁移,因为您已更改了某个Realm模型类 . 您实际上不需要在迁移块中执行任何操作,Realm可以自行处理迁移,您只需要将架构版本增加1 .
在
AppDelegate.swift
中,定义didFinishLaunchingWithOptions
函数内的迁移:代码是从Realm的official documentation复制的 .