ios - Swift CoreData——无法将类型 'Int' 的值分配给类型 'Int16'

标签 ios core-data

我声明了一个具有 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/

相关文章:

ios - 为什么 UILocalNotifications 不重复?

core-data - 今日 iCloud + 核心数据(2015 年 7 月 10 日)

ios - 如何清除 Restkit 中 UITableView 的 NSFetchedResultsController 结果

ios - 添加解析对象后发出重新加载 TableView 的问题

ios - SDWebImage 在 iOS 8.1 上出现奇怪的编译错误

ios - SpriteKit : What's up with the coordinate system?

ios - 从一对多关系核心数据的实体中获取对象

ios - 使用核心数据快速保存不断变化的整数

ios - 父/子托管对象上下文究竟是如何工作的?

ios - iPhone 6 屏幕尺寸在模拟器上返回 375