2017-05-16 15 views
0

以前のストーリーボードのユーザー入力名を、名前 "name"のエンティティ "UserInfo"のxcdatamodelに保存しました。私は次のストーリーボードでそれを取り出して、ユーザーを迎えるためのラベルを表示しようとしています。私はエラーが「タイプの初期化子を呼び出すことはできません種類のリストを引数と 『NSFetchRequet』「(エンティティネーム:文字列、attributeNameの:String)を」取得していますフェッチ要求エラー

 guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { 
    return 
    } 

    //getting the managed context where the entity we need is 
    let managedContext = appDelegate.persistentContainer.viewContext 

    //make fetch request 
    let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "UserInfo", attributeName: "name") 


    //try to fetch the entity we need, else print error 
    do { 
    Username = try managedContext.fetch(fetchRequest) 
    } catch let error as NSError { 
    print("Could not fetch. \(error), \(error.userInfo)") 
    } 

答えて

0

引数を取るNSFetchRequestための初期化子はありませんattributeName:、エラーのように表示されます。オプションはNSFetchRequest(entityName:)またはNSFetchRequest()です。

疑問がある場合は、APIリファレンスのクラスを参照して、使用方法を理解してください。

0

NSFetchRequestあなたは常に

let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "UserInfo") 

fetch戻り配列を使用する必要があり、初期化子entityName:attributeNameを持っていません。 1つのレコードのみがエンティティに存在する場合、最初の項目と属性nameの値を取得する:

do { 
    let users = try managedContext.fetch(fetchRequest) 
    if let user = users.first { 
     Username = user.value(forKey: "name") 
    } 
} catch let error as NSError { 
    print("Could not fetch. \(error), \(error.userInfo)") 
} 

複数のレコードがある場合は、述語を適用される場合があります。


とんではないguardAppDelegate。このクラスが存在しなければ、アプリケーションは起動されません。感嘆符はで安全です。です。

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
関連する問題