我声明了一个具有 Int16 类型的“zip”属性的 CoreData 实体地址。
问题是,当我为该属性分配一个整数时:
address?.zip = Int(zipField.text!)
我收到一条错误消息,指出无法将类型 Int 的值分配给类型 Int16。有道理(我猜)。
问题是,当我尝试将该 int 转换为 Int16 时,XCode 仍然在我身上爆炸:
let zip:Int? = Int(zipField.text!)
if zip != nil {
let zip16 = Int16(zip!)
}
正是我转换整数的那一行导致 XCode 崩溃。我在错误消息中没有真正看到任何信息,所以我不确定要尝试什么。
一般来说,由于这些手机的操作系统,我应该使用 Int64 吗?
最佳答案
你应该从你的代码中清除所有的!
。这只是告诉编译器“如果我做错了什么就崩溃”:
if let str = zipField.text,
let zip = Int16(str) {
address?.zip = zip
}
此外,您应该阅读 Swift 的 guard
语句,因为如果您没有地址,则运行任何代码都没有意义。像这样的东西:
guard let addr = address else { return }
addr.zip = 90210
关于ios - Swift CoreData——无法将类型 'Int' 的值分配给类型 'Int16',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638294/