Pav*_*kyy 0 core-data ios swift swift3
迁移到swift3后,我遇到了无法解决的问题
let fetchRequest: NSFetchRequest<User> = User.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "id == %@", id)
Run Code Online (Sandbox Code Playgroud)
我的应用程序在第二行崩溃,访问不良,没有理由.类型是对的,没有日志,没有,只是访问不好.有什么建议?
发现一个原因,谓词错了,导致id是Int64类型,不知道我这个版本的swift需要什么样的谓词
该%@格式期待Foundation对象作为参数,比较
"上游格式化字符串的语法"中的"谓词编程指南".
你可以桥Int64接到NSNumber:
let id = Int64.max
let predicate = NSPredicate(format: "id == %@", id as NSNumber)
print(predicate) // id == 9223372036854775807
Run Code Online (Sandbox Code Playgroud)
或将格式更改为"long long":
let id = Int64.max
let predicate = NSPredicate(format: "id == %lld", id)
print(predicate) // id == 9223372036854775807
Run Code Online (Sandbox Code Playgroud)
从Swift 3.0.1(Xcode 8.1)开始,可以将所有数字类型桥接到NSNumber一起,实现
SE-0139桥接数字类型到NSNumber和Cocoa结构到NSValue.
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |