簡體   English   中英

核心數據關系未保存到商店

[英]Core Data relationship not saved to store

我有這個命令行應用程序,它遍歷CSV文件以創建Core Data SQLite存儲。 在某些時候,我正在構建這些SPStop對象,它具有routesschedules到多個關系:

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設置被清空。 怎么會這樣?

好吧,我們禁用了Xcode的反向關系警告,該警告明確指出:

SPStop.routes沒有反轉; 這是一個高級設置(沒有對象可以在特定關系的多個目標中)

這正是我們的問題。 我們拋棄了反向關系,因為Apple聲稱它們只對“數據完整性”有利。 我們的商店是只讀的,所以我們認為我們並不真正需要它們。 我們現在知道,反向關系不僅僅是“數據完整性”:P

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM