我有這個命令行應用程序,通過CSV文件迭代創建一個核心數據SQLite商店。在某些時候,我要建這些SPStop對象,其中有routes
和schedules
一對多關係:核心數據關係沒有保存到商店
SPRoute *route = (SPRoute*)[self.idTransformer objectForOldID:routeID ofType:@"routes" onContext:self.coreDataController.managedObjectContext];
SPStop *stopObject = (SPStop*)[self.idTransformer objectForOldID:stopID ofType:@"stops" onContext:self.coreDataController.managedObjectContext];
[stopObject addSchedulesObject:scheduleObject];
[stopObject addRoutesObject:route];
[self.coreDataController saveMOC];
如果我登錄我的stopObject
對象(之前或保存後,同樣的結果),我得到如下:
latitude = "45.50909";
longitude = "-73.80914";
name = "Roxboro-Pierrefonds";
routes = (
"0x10480b1b0 <x-coredata://A7B68C47-3F73-4B7E-9971-2B2CC42DB56E/SPRoute/p2>"
);
schedules = (
"0x104833c60 <x-coredata:///SPSchedule/tB5BCE5DC-1B08-4D11-BCBB-82CD9AC42AFF131>"
);
注意路線和時間表對象URL格式有何不同?這一定是有原因的,因爲當我使用sqlite存儲並且打印相同的stopObject
時,我的routes
集合是空的,但是其中的一個不是schedules
。
我意識到這是非常少的調試信息,但也許不同的URL格式響個人鈴?我會做錯什麼會導致這種情況?
編輯:似乎一個SPRoute對象只能一次分配給一個SPStop。我在迭代結束時插入了斷點,並且每次看到一個sqlite,我一定會看到,只要SPRoute對象(已經分配給前一個stop.routes
)被分配給新的SPStop,前面的stop.routes
設置得到清空。怎麼會這樣?
您是否正在對您的路線和時間表訪問器/關係進行任何不尋常的事情,或者它們都是相同的,但具有不同的目標實體? – jrturton 2011-12-27 22:51:16
@jrturton訪問器都是由Xcode生成的默認訪問器。 '日程安排'有一個逆,而'路線'沒有。我嘗試了一下「路線」,但它沒有改變任何東西。 – samvermette 2011-12-27 23:06:18