我試圖追加一個名爲Timeline
(誰是消息員)的CoreData中包含Tree
和User
關係的獲取實體。爲什麼將一個coreData實體附加到一個設置爲零關係的數組中?
當我嘗試從CoreData中獲取它時,所有的都是好的,用戶和樹存在並且沒有設置爲nil
。但是當我將它添加到我的數組中時,用戶關係消失,但樹不是,只有數組中的最後一個Timeline
實體保留兩者的引用。
這裏我環路上的JSON,我取Timeline
從CoreData的ID或創建它,如果CoreData不知道他裏面Timeline.get(withJSON:_, inManagedObjectContext:_)
:
Timeline entitie from core data :
<myApp.Timeline: 0x6080002a1560> (entity: Timeline; id: 0xd0000000046c0006 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/Timeline/p283> ; data: {
createdAt = "2016-12-03 17:25:21 +0000";
id = 21;
message = "blablabla";
tree = "0x60800023fa20 <x-coredata:///Tree/t742495B8-E258-4C42-8E69-AC9776194B7A22>";
updatedAt = "2016-12-03 17:25:21 +0000";
url = nil;
user = "0xd000000000080000 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/User/p2>";
})
Timeline entitie from core data :
<myApp.Timeline: 0x6000000bc620> (entity: Timeline; id: 0xd0000000047c0006 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/Timeline/p287> ; data: {
createdAt = "2016-12-04 12:17:23 +0000";
id = 22;
message = "jaw dawd awdkj alwkjd alwkjd lawkjd lakwjd lakwjdl kawjl dkajwldkja wlkdjawl kjdawlk jdawlkjaw lkjawlkawjlkw aj lkawjd lkawjd lkjawdl kjawd awdl kajwldk jawlkjd lakwj dlakwj ldkajw lkdjawlk jlakwjd la";
tree = "0x6000002354c0 <x-coredata:///Tree/t742495B8-E258-4C42-8E69-AC9776194B7A23>";
updatedAt = "2016-12-04 12:17:23 +0000";
url = nil;
user = "0xd000000000080000 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/User/p2>";
})
Timeline entitie from core data :
<myApp.Timeline: 0x6080002a1b60> (entity: Timeline; id: 0xd000000004800006 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/Timeline/p288> ; data: {
createdAt = "2016-12-04 15:19:02 +0000";
id = 30;
message = "Niche";
tree = "0x6080004279e0 <x-coredata:///Tree/t742495B8-E258-4C42-8E69-AC9776194B7A31>";
updatedAt = "2016-12-04 15:19:02 +0000";
url = nil;
user = "0xd000000000080000 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/User/p2>";
})
:我內環絕版
var timelines = [Timeline]()
for jsonRow in json.arrayValue {
if let timeline = Timeline.get(withJSON: jsonRow, inManagedObjectContext: context) {
print("Timeline entitie from core data :\n", timeline)
timelines.append(timeline)
}
}
print("timelines array:\n", timelines)
結果
這裏我的陣列的結果:
timelines array:
[<myApp.Timeline: 0x6080002a1560> (entity: Timeline; id: 0xd0000000046c0006 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/Timeline/p283> ; data: {
createdAt = "2016-12-03 17:25:21 +0000";
id = 21;
message = "blablabla";
tree = "0x60800023fa20 <x-coredata:///Tree/t742495B8-E258-4C42-8E69-AC9776194B7A22>";
updatedAt = "2016-12-03 17:25:21 +0000";
url = nil;
user = nil;
}), <myApp.Timeline: 0x6000000bc620> (entity: Timeline; id: 0xd0000000047c0006 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/Timeline/p287> ; data: {
createdAt = "2016-12-04 12:17:23 +0000";
id = 22;
message = "jaw dawd awdkj alwkjd alwkjd lawkjd lakwjd lakwjdl kawjl dkajwldkja wlkdjawl kjdawlk jdawlkjaw lkjawlkawjlkw aj lkawjd lkawjd lkjawdl kjawd awdl kajwldk jawlkjd lakwj dlakwj ldkajw lkdjawlk jlakwjd la";
tree = "0x6000002354c0 <x-coredata:///Tree/t742495B8-E258-4C42-8E69-AC9776194B7A23>";
updatedAt = "2016-12-04 12:17:23 +0000";
url = nil;
user = nil;
}), <myApp.Timeline: 0x6080002a1b60> (entity: Timeline; id: 0xd000000004800006 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/Timeline/p288> ; data: {
createdAt = "2016-12-04 15:19:02 +0000";
id = 30;
message = "Niche";
tree = "0x6080004279e0 <x-coredata:///Tree/t742495B8-E258-4C42-8E69-AC9776194B7A31>";
updatedAt = "2016-12-04 15:19:02 +0000";
url = nil;
user = "0xd000000000080000 <x-coredata://D5FDDD6B-2A13-4B03-B592-45C99D801439/User/p2>";
})]
謝謝如果喲你已經得到了答案,六行代碼從來沒有讓我如此瘋狂......
不,實際上'用戶'與'時間線'有一對多的關係。 'Timeline'是'User'內的NSSet,Timeline有'User'的特性。這是我查過的第一件事...... –
這很奇怪,因爲你的結果是一個完美的例子,說明如果關係是一對一而不是對一對多時會發生什麼。 –
你認爲這可能是我的基於Coredata Xcode 8模型的'User'實體和Coredata XCode 7.3中的'Timeline'之間的區別嗎? –