gpt4 book ai didi

ios - 快速 3 迁移后 NSPredicate 崩溃

转载 作者:行者123 更新时间:2023-11-28 09:34:10 24 4
gpt4 key购买 nike

迁移到 swift3 后,我有一个无法解决的问题

    let fetchRequest: NSFetchRequest<User> = User.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "id == %@", id)

我的应用程序在第二行崩溃,无法访问,没有任何原因。类型是正确的,没有日志,什么都没有,只是访问错误。有什么建议么?

找到原因了,predicate不对,因为id是Int64类型,不知道这个版本的swift需要什么样的predicate

最佳答案

%@ 格式需要一个 Foundation 对象 作为参数,比较 "Predicate Format String Syntax"在“谓词编程指南”中。

你可以桥接 Int64NSNumber:

let id = Int64.max
let predicate = NSPredicate(format: "id == %@", id as NSNumber)
print(predicate) // id == 9223372036854775807

或将格式更改为“long long”:

let id = Int64.max
let predicate = NSPredicate(format: "id == %lld", id)
print(predicate) // id == 9223372036854775807

从 Swift 3.0.1 (Xcode 8.1) 开始,通过实现将 所有 数字类型桥接到 NSNumber 是可能的 SE-0139 Bridge Numeric Types to NSNumber and Cocoa Structs to NSValue .

关于ios - 快速 3 迁移后 NSPredicate 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40686005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com