2011-03-26 26 views
1

Ey guys,所以我有這個preloader(Xcode命令行實用程序項目),它預裝我的iPhone應用程序的sqlite存儲,它一直工作得很好,直到現在,因爲它總是給我一個不兼容的存儲錯誤。因此,不是在預加載器中引用.mom文件,而是在預加載器中創建它以希望繞過此問題。這是我的問題進入的地方,我如何確定preloader存儲.mom文件的位置,我正在創建它?有什麼辦法可以告訴它放置在哪裏?如何確定/控制管理對象模型(.mom)文件的存儲位置?

下面是一些相關的代碼片段。

從iPhone應用程序中: /** 返回應用程序的託管對象模型。 如果模型尚不存在,則通過合併應用程序包中找到的所有模型來創建它。 */ - (NSManagedObjectModel *)managedObjectModel {

if (managedObjectModel != nil) { 
     return managedObjectModel; 
    } 
    //managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; 

    NSURL *modelURL = [NSURL fileURLWithPath:@"path/to/Parking.mom"]; 
    managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

#pragma mark TODO change below line to search for your project's mom file 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Parking" ofType:@"mom"]; 
    return managedObjectModel; 
} 

從預加載(Xcode的命令行工具項目)中:

NSManagedObjectModel *managedObjectModel(NSString* momPath) { 

    static NSManagedObjectModel *model = nil; 

    if (model != nil) { 
     return model; 
    } 
    model = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; 

    //NSURL *modelURL = [NSURL fileURLWithPath:momPath]; 
    //model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

    return model; 
} 

如果你仔細觀察的代碼,你可以看到我換什麼在每個文件中。

在此先感謝!

回答

1

使用-initWithContentsOfURL:從您喜歡的任何位置讀取受管對象模型文件。事實上,做這麼多事情可能會解決你的錯誤......它可能是你的包中有一箇舊的模型文件,並使用+ mergedModelFromBundles:將它添加到其他模型文件中。