使用Swift打印领域数组中的特定值
我是Realm/Swift的新手,尝试做简单的打印。我有一个简单的代码:使用Swift打印领域数组中的特定值,swift,realm,Swift,Realm,我是Realm/Swift的新手,尝试做简单的打印。我有一个简单的代码: // // ViewController.swift // Click // import UIKit import RealmSwift class ViewController: UIViewController { var testclick : Results<Click>? override func viewDidLoad() { super.viewDi
//
// ViewController.swift
// Click
//
import UIKit
import RealmSwift
class ViewController: UIViewController {
var testclick : Results<Click>?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func clickButton(sender: AnyObject) {
do {
let testclick = try Realm().objects(Click).filter("id == 1")
// let totalclicks = testclick.totalclicks
print(testclick)
} catch {}
let click = Click()
click.id = 1
click.totalclicks = 5
click.name = "C. Boutrup"
do {
let realm = try Realm()
try realm.write {
realm.add(click, update: true)
}
} catch {}
}
}
第二种解决方案:
//
// ViewController.swift
// Click
//
import UIKit
import RealmSwift
class ViewController: UIViewController {
var testclick : Results<Click>?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func clickButton(sender: AnyObject) {
do {
// let testclick = try Realm().objects(Click).filter("id == 1")
// let name = testclick.name
// print(testclick)
// Get a list of objects back out of Realm
let results = try Realm().objects(Click).filter("id == 1")
// Access the first object from the list (results[0] would also work)
let testclick = results.first
// Print its total clicks value
print(testclick!.totalclicks)
// trying
let myclicks = testclick!.totalclicks
let click = Click()
click.id = 1
click.totalclicks = myclicks + 1
print(click.totalclicks)
let realm = try Realm()
try realm.write {
realm.add(click, update: true)
}
} catch {}
}
}
//
//ViewController.swift
//点击
//
导入UIKit
导入RealmSwift
类ViewController:UIViewController{
var testclick:结果?
重写func viewDidLoad(){
super.viewDidLoad()
}
@iAction func clickButton(发件人:AnyObject){
做{
//让testclick=try Realm().objects(Click).filter(“id==1”)
//让name=testclick.name
//打印(单击测试)
//从领域中获取对象列表
让results=try Realm().objects(单击).filter(“id==1”)
//访问列表中的第一个对象(结果[0]也可以)
让testclick=results.first
//打印其总点击量值
打印(testclick!.totalclicks)
//尝试
让myclicks=testclick!.totalclicks
让单击=单击()
单击0.id=1
click.totalclicks=myclicks+1
打印(点击。点击总数)
让realm=try realm()
试试realm.write{
realm.add(单击,更新:true)
}
}捕获{}
}
}
如果“id”属性是对象的主键,可以尝试以下操作:
//
// ViewController.swift
// Click
//
import UIKit
import RealmSwift
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func clickButton(sender: AnyObject) {
//initialize your realm
let realm = try! Realm()
//check if there is a Click with id == 1
if let clickWithId1 = realm.objects(Click).filter("id == 1").first {
do {
//if there is a Click with id == 1, increment its totalclicks by 1 and update it
try realm.write {
clickWithId1.totalclicks += 1
realm.add(clickWithId1, update: true)
}
} catch {}
} else { // if there is no Click with id == 1, create it and add it to realm
let click = Click()
click.id = 1
click.totalclicks = 5
click.name = "C. Boutrup"
do {
try realm.write {
realm.add(click, update: true)
}
} catch {}
}
}
}
在您的代码中,
testclick
将是一个Results
对象,它将是用于查询的零个或多个结果的数组
要实际访问单击对象,首先需要将其从结果对象中取出
// Get a list of objects back out of Realm
let results = try Realm().objects(Click).filter("id == 1")
// Access the first object from the list (results[0] would also work)
let testclick = results.first
// Print its total clicks value
print(testclick.totalclicks)
如果您需要更多的澄清,请告诉我!:) 怎么会不行?因为它是在try内部定义的,而您尝试在外部使用它?我尝试了您的建议,构建成功,但单击按钮时出错:2016-02-10 09:49:58.798单击[4532:918521]***由于未捕获的异常“RLMEException”而终止应用程序,原因:“试图修改写入事务之外的对象-首先在RLMRealm实例上调用beginWriteTransaction。”将我们增加总点击数的行移到写入块中,您现在可以重试吗
//
// ViewController.swift
// Click
//
import UIKit
import RealmSwift
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func clickButton(sender: AnyObject) {
//initialize your realm
let realm = try! Realm()
//check if there is a Click with id == 1
if let clickWithId1 = realm.objects(Click).filter("id == 1").first {
do {
//if there is a Click with id == 1, increment its totalclicks by 1 and update it
try realm.write {
clickWithId1.totalclicks += 1
realm.add(clickWithId1, update: true)
}
} catch {}
} else { // if there is no Click with id == 1, create it and add it to realm
let click = Click()
click.id = 1
click.totalclicks = 5
click.name = "C. Boutrup"
do {
try realm.write {
realm.add(click, update: true)
}
} catch {}
}
}
}
// Get a list of objects back out of Realm
let results = try Realm().objects(Click).filter("id == 1")
// Access the first object from the list (results[0] would also work)
let testclick = results.first
// Print its total clicks value
print(testclick.totalclicks)