Ios 展开选项

Ios 展开选项,ios,xcode,sqlite,swift,optional,Ios,Xcode,Sqlite,Swift,Optional,我在一个SQLLite数据库中有两个值,我正在尝试打印它,我正在遵循一个关于核心数据的教程 var request = NSFetchRequest(entityName: "Users"); request.returnsObjectsAsFaults = false; var results = context.executeFetchRequest(request, error: nil); if(results?.count > 0){

我在一个SQLLite数据库中有两个值,我正在尝试打印它,我正在遵循一个关于核心数据的教程

    var request = NSFetchRequest(entityName: "Users");
    request.returnsObjectsAsFaults = false;
    var results = context.executeFetchRequest(request, error: nil);


    if(results?.count > 0){
        for result:AnyObject in results! {
            println(result.password!);
            println(result.name!);
        }
    }else{
        println("No results found");
    }
执行以下操作将打印如下所示的输出

Optional("pass")
Ricki
但是,如果我修改

结果.密码

如下

 println(result.password! as String!); 
然后我得到如下输出:

pass
Ricki
为什么我需要对数据库中的一列执行此操作,以便它在没有可选项的情况下打印,而不打印另一列


谢谢

您不应该强制转换为任何对象,更好地强制转换对象数组

比如:

如果你的价值观需要一个!可能是您已取消选中核心数据中的可选复选框


为什么在查看结果时使用AnyObject而不是用户?请显示在用户上声明的名称和密码。在对象模型中,是否已取消选中name属性的可选复选框?
var request = NSFetchRequest(entityName: "Users");
request.returnsObjectsAsFaults = false;
var users = context.executeFetchRequest(request, error: nil) as [Users]

If users.count > 0 {

    for user in users  {

        println(user.password);
        println(user.name);
    }

}