【发布时间】:2014-12-10 22:12:56
【问题描述】:
我有一个字段存储在一个名为“元数据”的核心数据对象上,它的类型为String(没有可选的,因为 Apple 文档说不要弄乱 CD 中的可选参数)。有时,元数据字段为零。在检查这个值是否为零时,我做了以下检查:
if object.metadata as String? != nil {
...
}
但是,我的代码作为EXC_BAD_ACCESS 在这一行不断崩溃。我也试过:
if let metadata = object.metadata as String? {
...
}
这也不起作用。我成功地将对象转换为代码其他部分的选项,所以我不明白为什么这种特殊情况不起作用。如何检查核心数据属性是否为 nil 字符串?
【问题讨论】:
-
可能有助于查看有关崩溃的更多详细信息。可能与强制转换无关,而与对象及其分配无关。另外,当你说你已经在代码的其他部分成功地转换了对象时,它们也是字符串吗?每次都崩溃吗?
-
@shim 是的 - 事实上,完全相同的属性。我有三个具有此属性的对象。前两个不是零,它通过了。最后一个是 nil,这就是它崩溃的地方
-
可以发布 NSManagedObject 子类文件吗?
-
试试
if let metadata = object.metadata as? String {...} -
if let metadata = object.metadata as String? { }应该工作,这是stackoverflow.com/a/25664102/1187415中的建议。它是否无法编译、崩溃或如何“不起作用”?