2017-02-08 9 views
0

私は見とり、私のxcdatamodel ファイルコアデータ - キャッチされない例外によりにアプリを終了「NSUnknownKeyException」

のデータ要素を取得するためのiOSに迅速にしようとしている:どのように見て

@IBAction func sees(_ sender: Any) { 
    let appdel = UIApplication.shared.delegate as! AppDelegate 
    let contect:NSManagedObjectContext = appdel.persistentContainer.viewContext 
    var results = NSManagedObject() 
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Places") 
    let records = try! contect.execute(fetchRequest) 
    let getlatitude = records.value(forKey: "lat") 
    let getlongitude = records.value(forKey: "long") 
    print("getted: \(getlatitude) \(getlongitude)") 
} 

を私xcdatamodelファイル

enter image description here

と私はとのクラッシュを持っている:

2017-02-08 14:10:21.330293 Parkar[6398:1283817] [LogMessageLogging] 6.1 Unable to retrieve CarrierName. CTError: domain-2, code-5, errStr:((os/kern) failure) 2017-02-08 14:10:24.404130 Parkar[6398:1283769] [error] error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject' CoreData: error: CoreData: error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject'

2017-02-08 14:10:24.410434 Parkar[6398:1283769] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key lat.'

+0

試しレコード[0] .value(forKey: "lat")as! Float – Himanshu

+0

いいえXcodeの右側に「Type NSPersistentStoreResutに添字のメンバーがありません」という理由でコンパイルできません –

答えて

0

このコードを試してみてください、それはここで

let fetch = NSFetchRequest<NSFetchRequestResult>() 
     // Create Entity Description 
     let entityDescription = NSEntityDescription.entity(forEntityName: "Places", in: self.managedObjectContext) 

     // Configure Fetch Request 
     fetch.entity = entityDescription 

     do { 
      let result = try self.managedObjectContext.fetch(fetch) 
      var orderList :NSArray = result 
      let lat = orderList.value(forKey: "lat") as! String 
       let long = orderList.value(forKey: "long") as! String 

     } catch { 
      let fetchError = error as NSError 
      print(fetchError) 
      } 
0

は、私が一緒に入れて管理する実用的なソリューションである私の仕事:

let appdel = UIApplication.shared.delegate as! AppDelegate 
let context:NSManagedObjectContext = appdel.persistentContainer.viewContext 
var results = NSManagedObject() //not sure what this is used for 
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Places") 

do { 

    let records = try context.fetch(fetchRequest) as! [Places] 

    let placeObject = records[0] 

    let lat = placeObject.lat 

    let long = placeObject.long 

    print("\(lat) \(long)") 

} catch { 

    print(error.localizedDescription) 
} 

最初のオフ、私は正しい単語にcontectを変更context 。次に、エラーをキャッチするためにtryステートメントをcatchで囲む必要があります。次に、records変数をコアデータのエンティティPlacesの配列にキャストしました。これでlatlongのようなPlacesエンティティの属性にアクセスできるようになりました。

関連する問題