2017-06-10 7 views
0

フェッチから:Retriveオブジェクト私は、次のコードと共に「asset_tag」と呼ばれる一つの属性を有する「デバイス」と呼ばれるコア・データ・エンティティを有する要求スウィフト

[<Device: 0x608000092c00> (entity: Device; id: 0xd000000000140000 <x-coredata://22AC91EB-92B1-4E5B-A5A9-A5924E0ADD3E/Device/p5> ; data: { 
    "asset_tag" = 26; 
})] 

var endArray: [Device] = [] 

var request = NSFetchRequest<NSFetchRequestResult>() 
      request = Device.fetchRequest() 
      request.returnsObjectsAsFaults = false 

endArray = try context.fetch(request) as! [Device] 

print (endArray) 

これは、次のプリントアウト

私はそれをプリントアウトしたいすべてがある[ '26']

+0

を使用取得します。 –

+0

@ TusharSharmaそうですが、内部にすべてのジャンクを持つ配列を返します。ちょうど値の配列を返す方法はありますか? – Martheli

+0

キーから価値を得ることができます。 –

答えて

0

endArray[Device]です。つまり、その中の各エントリはDeviceです。配列を印刷すると、配列の各エントリにdebugDescriptionを呼び出した結果が得られます。

あなただけの配列にasset_tagプロパティの整数値をしたい場合は、あなたがmapを使用してその配列を取得することができます

let tagValues : [Int] = endArray.map { Int($0.asset_tag) } 

これはtagValues[Int]型を持つ、とあなたが値を代入していることをことを言いますmapを使用して、endArrayに各エントリの1つの値を取得します。その値は、各エントリの値asset_tagを検索することによって求められます。結果はasset_tagの値に対応するIntの配列です。

1

this-のように試してみてください:

func loadData(){ 
      let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

      do{ 
       endArray = try context.fetch(request) as! [Device] 
       for data in 0..< endArray!.count{ 
        if let value = endArray?[data].value(forKey: "Your Key") { 
         print(value) 
        } 
       } 
      }catch{ 

      } 


     } 
+0

エラーが発生する場合は、[デバイス]タイプの値をサブタイプにすることはできません "デバイス"タイプのインデックス – Martheli

+0

@ Martheliはあなたのフェッチコードを表示できますか? –

0

まず、NSManagedObjectサブクラスを使用している場合は、特定のフェッチ要求を使用して型キャストを回避します。 NSFetchRequestは参考タイプです。要求を定数として宣言します(let)。

フェッチ要求は常にエンティティ[NSManagedObject]の配列を返します。 ジャンクが重要です。オブジェクトには多くの属性と関係が含まれます。

は、特定の属性の配列は、要求を使用すると、ループendArrayとプリントの値をすることができ、辞書の配列を返すフェッチ map機能

var endArray = [Device]() 

let request : NSFetchRequest<Device> = Device.fetchRequest() 
request.returnsObjectsAsFaults = false 

do { 
    endArray = try context.fetch(request) 
    let tagArray = endArray.map { $0.asset_tag } 
    print(tagArray) 
} catch { print(error) } 
関連する問題