私は、2つの属性asset_tagとlocationを持つDeviceというエンティティでコアデータスタックを設定しました。私はこのように設定した2つの配列があります。これは、追加Core Data Swift 3に2行のデータを挿入します
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
for device in assetTag {
let newArray = NSEntityDescription.insertNewObject(forEntityName: "Device", into: context)
newArray.setValue(device, forKey: "asset_tag")
}
:
var assetTag = ["53","35","26","42","12"]
var location = ["SC", "FL", "NA", "NY", "CF"]
を自分のコードの最初の部分は、最初の配列をループして、このようなasset_tag属性にそれぞれ番号を追加しますそれぞれの値を配列に渡すので、後でそれらを出力することができ、これは完全に機能します。 2番目の配列で同じことをして2番目の属性に追加したいのですが、試しても正しくデータが追加されません。これは私が持っているものです。私は結果をプリントアウトするとき
for locations in location {
let secondArray = NSEntityDescription.insertNewObject(forEntityName: "Device", into: context)
secondArray.setValue(locations, forKey: "location")
}
、私はnill値の束を得る:
[<Device: 0x600000281130> (entity: Device; id: 0xd000000001580000 <x-coredata://22AC91EB-92B1-4E5B-A5A9-A5924E0ADD3E/Device/p86> ; data: {
"asset_tag" = nil;
devices = nil;
location = CF;
}), <Device: 0x60000009f040> (entity: Device; id: 0xd0000000015c0000 <x-coredata://22AC91EB-92B1-4E5B-A5A9-A5924E0ADD3E/Device/p87> ; data: {
"asset_tag" = 53;
devices = nil;
location = nil;
}), <Device: 0x6000002810e0> (entity: Device; id: 0xd000000001600000 <x-coredata://22AC91EB-92B1-4E5B-A5A9-A5924E0ADD3E/Device/p88> ; data: {
"asset_tag" = nil;
devices = nil;
location = NY;
私はそれらのNILSがどこから来ていることを確認していません。
EDIT:
良く見えますが、私はNILSを持つデバイスと呼ばれる別の属性取得しています:また、私は上記のようなコア・データ、の順で結果をプリントアウトするとき
"asset_tag" = 12;
devices = nil;
location = CF;
を値は配列を定義した順序と同じではありません。
"asset_tag" = 12;
devices = nil;
location = CF;
"asset_tag" = 53;
devices = nil;
location = SC;
上記の結果は、12と53とCFとSCを示していますが、セットアップされた元のアレイとは異なる順序です。
オリジナルの投稿に編集を追加しましたが、まだいくつかの問題があります。また、私はdevice.asset_tagを使用することができませんが、私はXcodeで管理対象オブジェクトのサブクラスを作成しました。なぜ私がdevice.asset_tagを使用させないのかわからないのですが、 – Martheli
'devices'は属性を設定しないため' nil'です。リピートループで 'asset_tag'と' location'の属性のみを設定していることに注意してください。コレクションはデフォルトで順序付けされていません。フェッチ要求でオブジェクトを読み込むと、ソート記述子を渡して特定の順序を強制することができます。私はその属性にドット記法を使用できるように答えを更新しました。 – vadian
しかし、デバイスは私のデータモデルの属性ではありません。どこから来たのかわかりません。 – Martheli