检索等于UUID的领域对象

时间:2018-05-15 16:20:01

标签: ios swift realm swift4

希望我能坚持下去。

我将UUID字符串通过segue传递给下一个VC。这肯定有效,因为我在viewDidLoad上打印它。

我想要做的是使用该UUID(workoutID)检索对象。我遇到了崩溃:

"由于未捕获的异常终止应用'无效的值',原因:'属性类型字符串的预期对象' workoutID'对于类型' WorkoutSessionObject'的对象,但收到:0'"

当我尝试运行下面的代码时,我已经从其他与搜索相关的问题中进行了改编(我发现查询领域很难让我的头脑清醒):

class WorkoutSummaryController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    // Holder for my UUID passed via Segue which is working 
    var workoutID = UUID().uuidString

    override func viewDidLoad() {
        print(workoutID)

        // Set up the query to retrieve the object with the UUID that has been passed
        let predicate = NSPredicate(format: "workoutID = %A", workoutID)

        // Run the query and print the result which crashes
        let test = try! Realm().objects(WorkoutSessionObject.self).filter(predicate)
        print (test)
        super.viewDidLoad()
    }
}

任何帮助表示赞赏: - )

1 个答案:

答案 0 :(得分:1)

您的NSPredicate格式存在缺陷。您应该使用%@替换变量和%K替换密钥路径。

let predicate = NSPredicate(format: "workoutID = %@", workoutID)