【发布时间】:2016-07-15 06:03:03
【问题描述】:
我试图以可选值为基础,它总是使应用程序崩溃并出现以下错误。
* 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[valueForUndefinedKey:]:此类与键 q_id 的键值编码不兼容。” * 首先抛出调用栈:
虽然模型中有变量define但是是这样定义的
var q_id : Int!
如果我将这个变量转换成 unwrap 它工作正常
var q_id = Int()
那么对于可选值的谓词还有其他方法吗?
let Qid = dictData.objectForKey("q_id") as? String
let fQuesID : Int = Int(Qid!)!;
let predicate = NSPredicate(format: "SELF.q_id == %i",fQuesID)
let arrObj : NSArray = arrData.filteredArrayUsingPredicate(predicate) ;
//arrData.filter { predicate.evaluateWithObject($0) }
if(arrObj.count > 0)
{
let objPostModel : ViewPostModel = arrObj.firstObject as! ViewPostModel;
objPostModel.isPollExpired = 1; // 1 Means Poll Expired!
self.tblViewPost?.reloadData();
}
它只发生在原始可选类型变量(int,float,etc ...)中
更新: 如果您将原始类型设为非可选,那么它可以正常工作
【问题讨论】:
-
那么对于可选值的谓词还有其他方法吗? 取决于您真正想要做什么。如果
q_id可以访问,你能告诉我一个伪代码来描述你想要做什么吗? -
我用它来更新问题及其各自的答案......
-
向我们展示您的代码。
-
@OOPer 代码发布
标签: ios swift nsarray nspredicate