Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Swift打印领域数组中的特定值_Swift_Realm - Fatal编程技术网

使用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

我是Realm/Swift的新手,尝试做简单的打印。我有一个简单的代码:

//
//  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)