2014-10-03 3 views
0

У меня есть два значения в базе данных облегченной SQL, который я пытаюсь напечатать (я ниже учебник по основным данным)разворачивания OPTIONALS

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"); 
    } 

Doing следующие отпечатки на выходе видны ниже

Optional("pass") 
Ricki 

Однако, если я модифицировать

result.password

Чтобы быть следующим

println(result.password! as String!); 

Тогда я получить выход следующим образом;

pass 
Ricki 

Почему я должен сделать это для одного столбца в базе данных для того, чтобы печатать без дополнительного, но не для других?

Благодаря

+0

Почему вы используете 'AnyObject' вместо' Users' при прохождении результатов? Пожалуйста, покажите, что 'name' и' password' объявлены в 'Users'. – Kirsteins

+0

В вашей объектной модели вы не указали необязательный флажок для свойства 'name'? –

ответ

0

Вы не должны отбрасывать в Anyobject, лучше Cast ALS NSObject массив.

Как:

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); 
    } 

} 

Причина одна, если ваши ценности может понадобиться! может быть, что вы отключили «Факультативный галочка» в вашем Core Data

enter image description here

Смежные вопросы