एक nil मॉडल के साथ एक NSPersistentStoreCoordinator नहीं बना सकता


96

कोर डेटा पर मेरी पहली दरार रही है और मुझे अपने डिवाइस पर अपना कोड चलाते समय निम्न त्रुटि हो रही है, लेकिन यह सिम्युलेटर पर ठीक काम करता है ।।

* बिना किसी अपवाद के N NSInvalidArgumentException ’अपवाद के कारण समाप्ति ऐप, कारण: model nil मॉडल वाला NSPersistentStoreCoordinator नहीं बना सकता’

मेरे कुछ तरीके जो समस्या का कारण हो सकते हैं:

    - (NSManagedObjectContext *)managedObjectContext
{
    if (__managedObjectContext != nil)
    {
        return __managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil)
    {
        __managedObjectContext = [[NSManagedObjectContext alloc] init];
        [__managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return __managedObjectContext;
}

/**
 Returns the managed object model for the application.
 If the model doesn't already exist, it is created from the application's model.
 */
- (NSManagedObjectModel *)managedObjectModel
{
    if (__managedObjectModel != nil)
    {
        return __managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"RugbyOnTv" withExtension:@"momd"];
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    
    return __managedObjectModel;
}

/**
 Returns the persistent store coordinator for the application.
 If the coordinator doesn't already exist, it is created and the application's store added to it.
 */
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (__persistentStoreCoordinator != nil)
    {
        return __persistentStoreCoordinator;
    }

    NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"RugbyOnTV.sqlite"];

    NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];    
    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

    NSError *error = nil;
    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];


    if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }    

    return __persistentStoreCoordinator;
}


    - (NSString *)applicationDocumentsDirectory {

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
        return basePath;
    }

संपादित करें

मैंने Apple के CoreDataBooks से प्रबंधितObjectContext विधि (नीचे) को कॉपी और पेस्ट किया और अब यह काम करता है..क्योंकि वास्तव में यकीन है कि क्यों

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

अरे यह पहले URLForResource पैरामीटर के लिए "मॉडल" शब्द को लागू करने जितना आसान हो सकता है .... हाँ, मुझे भी यही समस्या थी। फिर मैंने कमांड लाइन में वास्तविक .app सामग्री की जाँच की और पाया कि .momd वास्तव में बनाया जा रहा था। इसलिए यह कोशिश करें: [[NSBundle mainBundle] URLForResource: @ "RugbyOnTvModel" withExtension: @ "momd"];
पोस्टकोडिज़्म

NSString *basePath = [paths firstObject];
विलियम एंट्रीकेन

जवाबों:


157

मेरे पास मूल पोस्ट के समान त्रुटि संदेश था। मैं इसके लिए घंटों कुश्ती कर रहा था। मेरे AppDelegate.m में यह लाइन थी।

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"[same with name of xcdatamodeld]" withExtension:@"momd"];

किसी को भी इस त्रुटि संदेश की खोज और इस धागे को खोजने के लिए .... पहले यह प्रयास करें।

आपको यह सुनिश्चित करना चाहिए कि यह कहाँ कहता है [xcdatamodeld के नाम के साथ] .... यह है कि !!! किसी कारण से, मेरा मेरा प्रोजेक्ट नाम वहां था और डेटा मॉडल नाम नहीं।

इसे बदल दिया और यह सीधे काम किया .....

रॉक एंड मुलर के योगदान के लिए धन्यवाद ....... आपने मुझे बचा लिया !!

GAZ।


2
यह वह टिप्पणी है जो मेरे लिए काम कर रही है। जादुई नाम मेरे ऐप लिए देख रहा था था blahसे blah.xcdatamodeld। धन्यवाद इंटरनेट, और stackoverflow।
एसरंगर

मेरे पास "Model.xcdatamodeld" है, जिसे तर्क के रूप में "मॉडल" में बदल दिया गया है। लेकिन Xcode इसे लोड करने से इनकार करता है, लेकिन यह फ़ाइल वास्तव में वहां है! मुझे नहीं पता, क्या हो रहा है।
दर्मेन अमनबायेव

वाह। धन्यवाद थोड़ी देर के लिए मेरे सिर को पीट रहा था।
सानी एल्फिशवि

एक के बारे में क्या?
मोरालकोड

54

पहले सत्यापित करें:

NSLog(@"%@", [self managedObjectModel]);

यदि आप एक शून्य मान प्राप्त करते हैं तो शायद समस्या यहाँ है

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"RugbyOnTv" withExtension:@"momd"];

इसलिए, @ "माँ" द्वारा @ "मोमेंट" को बदलने का प्रयास करें


1
आपका अधिकार। यह अशक्त है और इसलिए यह रेखा त्रुटि का कारण बन रही है: `__persistentStoreCoordinator = [[NSPersistentStoreCoordinator आबंटित] initWithManagedObjectModel: [आत्म प्रबंधितOjectModel]]; माँ को बदलना हालांकि कुछ भी ठीक नहीं लगता
डोमिनिक विलियम्स

3
सबसे अधिक संभावना modelURLभी है nil। सबसे आम कारण एक टाइपो इन है RugbyOnTv। ध्यान दें कि यह केस-संवेदी है।
रोब नेपियर

1
"मॉम" को "मॉम" में बदलना मेरे लिए भी काम आया। धन्यवाद। लेकिन क्यों? XCode जनरेटिंग कोड क्यों काम नहीं करता है? मुझे मूल टेम्पलेट काम करने के लिए SO में इस तरह अस्पष्ट सुधार क्यों मिले हैं?
ररबबार

10
हाल ही में अपने मॉडल का दूसरा संस्करण पेश करने के बाद मुझे इसे वापस मॉम में बदलना पड़ा। यह देखते हुए कि मॉडल संस्करण कंटेनर में xdatamodeld का विस्तार है मुझे लगता है कि हम यहां क्या चल रहा है, यह अनुमान लगा सकते हैं। "मॉम" एक से अधिक संस्करणों वाले मॉडल के लिए है जबकि "मॉम" उन मॉडलों के लिए है जिनमें संस्करण नहीं है।
गेराल्ड

2
मैंने एक नए प्रोजेक्ट [iOS7] वर्बेटिम में कोड कॉपी किया और यह मूल रूप से मोम्ड था लेकिन मॉम में बदलते हुए इसे ठीक कर दिया। मुझे नहीं पता कि मुझे इसके बिना कोई समाधान कैसे मिला होगा, इसलिए धन्यवाद :)
इयान क्ले

20

मैंने Xcode 4.3.2 और iOS 5 के साथ एक अजीब समस्या का अनुभव किया है।

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"NAME_OF_THE_MODEL" withExtension:@"momd"];

एक मान्य URL देता है लेकिन

__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

एक अशक्त NSManagedObjectModel देता है। लेकिन दस्तावेज़ीकरण की जाँच करने के बाद , ऐसा लगता है कि NSManagedObjectModel को एक फ़ाइल की आवश्यकता है जहाँ NAME_OF_THE_MODEL.momd एक निर्देशिका है जिसमें NAME_OF_THE_MODEL.mom फ़ाइल शामिल है। URL को बदलना

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"NAME_OF_THE_MODEL" withExtension:@"mom" subdirectory:@"NAME_OF_THE_MODEL.momd"];

फिर काम करता है। अजीब लगता है कि Xcode कोड है कि खुद के साथ काम नहीं करता है उत्पन्न करता है ...


1
यह विशिष्ट समस्या एक अतिरिक्त मॉडल संस्करण बनाने और फिर Xcode खुले रहने पर इसे मैन्युअल रूप से हटाने का प्रयास करने के कारण होती है। इससे किसी प्रकार का भ्रष्टाचार होता है। आपको मॉम निर्देशिका में विशिष्ट मॉडल संस्करणों में पास नहीं होना चाहिए।
माइक वेलर

अच्छा @MikeWeller, अच्छा पता करने के लिए। क्या आप जानते हैं कि मेटाडेटा कहाँ है जो मॉम डायरेक्टरी में मॉम फ़ाइल को इंगित करता है?
Xster

मैं इसे हटाने की कोशिश नहीं कर रहा था, लेकिन मेरे पास यह मुद्दा था और मेरे लिए पोस्ट किए गए समाधान ने विशेष रूप से काम किया, मैंने सिर्फ यह देखने के लिए एक चेक जोड़ा कि क्या इसका अभी भी शून्य है और अगर यह है तो मैंने उस कोड को ऊपर जोड़ा: if (_managedObjectContext =) nil) {NSURL * modelURL = [[NSBundle mainBundle] URLForResource: @ "मॉडल" withExtension: @ "माँ" उपनिर्देशिका: @ "Model.momd"]; _managedObjectModel = [[NSManagedObjectModel आवंटित] initWithContentsOfURL: modelURL]; }
डेविड वैन डुगटरन

19

मुझे यह समस्या थी और "माँ" को "माँ" में बदलना कुछ भी नहीं था। इसे ठीक करने के लिए मुझे xcdatamodelId फ़ाइल> शो पैकेज सामग्री पर राइट क्लिक करना होगा, फिर छिपी हुई .xcurrent विपथन फ़ाइल को हटा दें।

पुनश्च: यह समस्या केवल तब शुरू हुई जब मैंने डेटा मॉडल फ़ाइल का नाम बदल दिया।


2
निम्नलिखित समस्या का सामना कर रहे हर किसी के लिए: xObatamodeld फ़ाइल का नाम बदलने के बाद ManageObjectModel शून्य हो रहा है: यह उत्तर सबसे अच्छा है! धन्यवाद JDx, आपके उत्तर ने मुझे बहुत मदद की!
दामोको

इसे हटाने के बजाय आप अंततः इसे संपादित कर सकते हैं ताकि आप फ़ाइल नाम बदलकर youl
xcdatamodel

13

इस त्रुटि का एक अन्य स्रोत, यह है कि कभी-कभी Xcode बिल्ड में डेटा मॉडल को शामिल नहीं करता है।

अपने लक्ष्य के बिल्ड चरणों की जाँच करें, और सुनिश्चित करें कि * .xcdatamodeld फ़ाइल संकलित स्रोत अनुभाग में शामिल है।


इसने मेरे लिए इसे ठीक कर दिया।
बेन थॉमस

यह मेरे लिए काम किया। जब यह सिम्युलेटर पर काम करता है और असली डिवाइस पर नहीं तो इसकी निराशा और मुश्किल!
बिशाल घिमिरे

9

संभवतः ऐसा हुआ है कि Apple के स्रोत कोड से आपकी xcdatamodeld फ़ाइल एक xcdatamodel (d के बिना) फ़ाइल में बदल गई है और इसलिए उन्हें समान नहीं माना जाता है।

इसे ठीक करने का सबसे तेज़ तरीका है, अपने प्रोजेक्ट नेविगेटर में और मेनू बार में xcdatamodel फ़ाइल का चयन करना

Editor->Add Model Version...

और अपने मॉडल का एक नया संस्करण जोड़ें। नए संस्करण में सभी परिवर्तन करें।

यह Xcode 5 में काम करता है


दुर्भाग्य से इस विकल्प Xcode 5 में मौजूद नहीं है .. देखें यहाँ
abbood

यह उल्लेख करना भूल गए कि आपको xcdatamodel फ़ाइल का चयन करने की आवश्यकता है। टिप्पणी को प्रतिबिंबित करने के लिए संपादित उत्तर।
लुई क्रेमेन

8

मैं इसे db फ़ाइल को जोड़कर हल करता हूं Copy Bundle Resources

अपने प्रोजेक्ट के रूट पर जाएं >> अपने लक्ष्य का चयन करें >> बिल्ड चरण >> कॉपी बंडल संसाधन। सुनिश्चित करें कि आपकी xcdatamodeld फ़ाइल यहाँ जोड़ी गई है।

यहां छवि विवरण दर्ज करें

किसी भी पोस्ट किए गए समाधान ने मेरे लिए काम नहीं किया। तो, उम्मीद है कि यह पोस्ट किसी को वहाँ से बाहर निकलने में मदद करती है। मेरा ऐप केवल रिलीज़ में क्रैश होने पर btw बनाता है। सबक सीखा। हमेशा परीक्षण रिलीज बनाता है!

BTW, मैंने इस SO पोस्ट को सबसे उपयोगी https://stackoverflow.com/a/6708837/951349 पाया


6

मुझे @Dominic विलियम्स के साथ एक ही मुद्दा मिला

नीचे दिए गए Momd फ़ाइल नाम को बदलने का प्रयास करें (आप इसे managedObjectModelडिफ़ॉल्ट रूप से विधि में पा सकते हैं ), जो [file name].xcdatamodeldआपके द्वारा बनाई गई फ़ाइल के समान है :

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"[same with name of xcdatamodeld]" withExtension:@"momd"];

5

मुझे भी यही समस्या थी। समाधान 2 उत्तरों का मिश्रण था:

1) मुझे URLForResource कॉल में "उपनिर्देशिका" पैरामीटर जोड़ना था

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DATAMODEL_NAME" withExtension:@"mom" subdirectory:@"DATAMODEL_NAME.momd"];

2) एक कारण के लिए मैं नहीं जानता, डेटा मॉडल को शामिल नहीं किया गया था जब परियोजना संकलित की गई थी। मुझे इसे "बिल्ड चरणों / संकलन संसाधनों" में मैन्युअल रूप से जोड़ना था।

उपरोक्त समाधानों में से केवल एक के साथ, मेरा आवेदन काम नहीं किया।


4

आप जिस समस्या से बात करते हैं उसका समाधान सरल है। मॉडल URL में "Momd" के बजाय फ़ाइल एक्सटेंशन को "mom" में बदलें। किया हुआ।


4

मैंने यहां सभी समाधानों की कोशिश की, और उनमें से कोई भी काम नहीं किया। प्रोजेक्ट का नाम बदलने के बाद मेरा मुद्दा दिखाई दिया। जाहिरा तौर पर, संकलन के दौरान गलत स्थान पर पुरानी मोम्ड फ़ाइल की तलाश में Xcode जारी रहता है।

सफलता के बिना उपरोक्त सभी समाधानों की कोशिश करने वाले व्यक्ति के लिए, अपनी .xcdatamodeldफ़ाइल के पूर्ण पथ की जाँच करने का प्रयास करें । मेरे लिए यही काम आया।


4

मुझे एक ही समस्या थी, यह iOS6 पर ठीक काम करता था लेकिन iOS5 पर नहीं। यह मैंने इसे कैसे हल किया:

  1. Xcode में एक नया मॉडल संस्करण बनाएँ। (को चुनिए.xcdatamodeld , संपादक मेनू खोलें और "मॉडल संस्करण जोड़ें ..." पर क्लिक करें)
  2. संकलित करें और सुनिश्चित करें कि नया संस्करण काम करता है।
  3. पुराने को वर्तमान संस्करण के रूप में सेट करें। ("वर्तमान" के लिए फ़ाइल इंस्पेक्टर में.xcdatamodeld वर्जन कोर डाटा मॉडल तहत )
  4. संदर्भ निकालें .xcdatamodeldफाइल का एक्सकोड में
  5. राइट क्लिक करें .xcdatamodeldफाइल को फाइंडर में और "Show Package Contents" चुनें।
  6. नया हटाएं .xcdatamodel जो आप नहीं चाहते हैं
  7. फिर से जोड़ना .xcdatamodeld एक्सकोड में
  8. संकलित करें और मुस्कुराएं

(यह वह जगह है जहाँ मैंने पाया कि एक मॉडल संस्करण कैसे हटाया जाए : Xcode में पुराने / अप्रयुक्त डेटा मॉडल संस्करण को कैसे हटाया जाए )


बहुत बहुत शुक्रिया! यह बहुत मददगार था।
माइकल डॉर्न

4

मैं किसी भी कोड को बदले बिना समस्या को हल करता हूं।

मैं फ़ाइल के माध्यम से ModelName.xcdatamodeld जोड़-> फ़ाइल को Xcode में खींचने के बजाय फ़ाइल जोड़ें।

 NSString *path=@"ModelName";

NSURL *modelURL = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"momd"]];

model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

1

मेरी ओर से समस्या यह थी कि मैं डेटाबेस नाम में कुछ पात्रों के मामले को बदल दूंगा।

एक नया प्रोजेक्ट शुरू करते समय, Xcode स्वचालित रूप से प्रोजेक्ट नाम से सब कुछ सेट करता है। यदि आपने अपनी परियोजना को "रग्बीऑन्टव" कहना शुरू कर दिया और बाद में "रग्बीऑनटीवी" में बदलने का फैसला किया और एक खोज और प्रतिस्थापित किया, तो वह इसे तोड़ देगा। (यह इंगित करने के लिए रोब का श्रेय है कि नाम केस-संवेदी है)


1

मैं घंटों तक जवाब ढूंढता रहा और कुछ भी काम नहीं आया। लेकिन फिर मुझे अचानक यह लेख मिल गया । तो इस के अनुसार, समस्या AppDelegate.m के इस हिस्से में रूट नियंत्रक स्थापित करने में थी:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    ListViewController *rootView = (ListViewController *)self.window.rootViewController;
    rootView.managedObjectContext = self.managedObjectContext;
    return YES;
}

वास्तव में आपको परिभाषित करना चाहिए कि रूट नियंत्रक आपके कोरडैटा कनेक्शन को क्या दर्शाता है। और मेरे मामले में मेरे पास एक TabBarController अन्य विचारों से जुड़ा था, इसलिए मेरे टारगेटेड व्यू रूट कंट्रोलर को TabBar के रूप में परिभाषित किया गया था और यह एक त्रुटि का कारण बना। मैं बदल गया

ListViewController *rootView = (ListViewController *)self.window.rootViewController;

सेवा

ListViewController *rootView = (ListViewController *)self.window.superview;

और सब कुछ काम किया।


1

मुझे पता है कि यह आपकी समस्या को हल नहीं करता है, लेकिन मैं कल इस समस्या में भाग गया जिसने मुझे घंटों तक परेशान किया, समाधान @Dominic विलियम्स ने मुझे एक ArrayIndexOutOfBoundsException (जो भी उद्देश्य-सी समतुल्य है) दिया।

मैं अभी तक उद्देश्य-सी / एक्सकोड के साथ बहुत अच्छा नहीं हूं, लेकिन मैं एक आईओएस ऐप पर काम कर रहा हूं जो हमारी कंपनी (ज्यादातर) बाहरी रूप से विकसित हुई थी। दुर्भाग्य से, वे अक्सर भूल जाते हैं कि कीबोर्ड का उपयोग कैसे किया जाता है और गलत तरीके से कैपिटल अक्षरों का उपयोग किया जाएगा या गलत तरीके से उपयोग किया जाएगा लेकिन वापस जाने और इसे बदलने के लिए बहुत आलसी थे। उन्होंने xcode प्रोजेक्ट के नाम में एक कैपिटल लेटर का इस्तेमाल किया था, जहाँ ऐसा नहीं होना चाहिए था (हमारे प्रोडक्ट का नाम किसी कैपिटल का उपयोग नहीं करता है) और मुझे इस अपर-केस लेटर की हर घटना को लो-केस में वापस लाना पड़ा। ; जिसमें प्रोजेक्ट का नाम, कोर डेटा फ़ाइल, सैकड़ों चर आदि शामिल थे।

वैसे भी, एक बार ऐसा करने के बाद मैं इस त्रुटि में भाग गया और कोई समाधान मेरे लिए इसे ठीक नहीं कर रहा था। मैंने यह सुनिश्चित कर लिया था कि सभी URL नाम सही थे, प्रोजेक्ट क्लीन किया हुआ था, ऐप अनइंस्टॉल किया गया था, फ़ोन रीस्टार्ट किया गया था, आदि कोई फायदा नहीं हुआ। मैंने हार मान ली और अपने मैक को बंद कर दिया और दिन के लिए घर चला गया। मेरे आश्चर्य करने के लिए, मैं आज सुबह वापस आया और सब कुछ ठीक लग रहा था!

मुझे नहीं पता कि यह क्यों काम किया लेकिन अगर आपका अटक गया है, तो अपने मैक को पुनरारंभ करने का प्रयास करें।


1

अगर कोई उसी मुद्दे के कारण फंस गया है। सुनिश्चित करें कि आपने डेटाबेस को ठीक से लिंक किया है (जैसा कि आपने कोड को सीधे कुछ उदाहरण से कॉपी किया होगा)।
बस डेटाबेस का नाम UpdateObjectModel में और AppDelegate में persistentStoreCoordinator तरीकों को अपडेट करें ।


1

मैं एक ही मुद्दा था, यानी

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyModel" withExtension:@"momd"];

nil लौटा, क्योंकि कोई .momd फ़ाइल उत्पन्न नहीं हुई थी।

कारण यह था कि ऐप डायरेक्टरी (जैसे MyGreatApp / MyGreatApp.app) xcode ने MyModel.xcdatamodeld फ़ाइल (Momc का उपयोग करके) से MyModel.momd बनाने के बजाय MyModel.xcdatamodeld की प्रतिलिपि बनाई थी।

समाधान XCode प्रोजेक्ट ब्राउज़र के अंदर MyModel.xcdatamodeld के संदर्भ को हटाने और इसे खोजक से परियोजना में वापस खींचने के लिए था। उसके बाद xcode को एहसास हुआ कि इसे एक .momd में संकलित करने की आवश्यकता है।


1

मेरे द्वारा जनरेट किए गए ऐप को हटाने के बाद मुझे यह समस्या थी ~/Library/Application Support/iPhone Simulator। किसी तरह यह बाद में सिम्युलेटर और उपकरणों में विफल होने का कारण बना। उम्र के लिए CoreData के साथ करने के लिए कुछ भी नहीं बदला है, लेकिन यह के साथ विफल हो जाएगा Cannot create an NSPersistentStoreCoordinator with a nil model। ऊपर कुछ चीजों की कोशिश की और कुछ भी काम नहीं किया।

मैं अंदर माँ फ़ाइल के साथ उत्पन्न momd फ़ोल्डर देख सकता था। सिम्युलेटर में ऐप दोनों को देख सकता था लेकिन यह साइक्लाइट फाइल उत्पन्न करने में विफल रहा।

जो हल किया गया था वह एक्सकोड में मेरी xcdatamodeld फ़ाइल में एक इकाई के लिए एक विशेषता जोड़ रहा था और फिर तुरंत इसे हटा रहा था। मैं उम्मीद कर रहा था कि यह जो कुछ भी खरोंच से समस्या पैदा कर रहा था उसे फिर से बनाने के लिए Xcode मिलेगा और यह काम करने लगा। अभी भी स्पष्ट नहीं है कि वास्तव में क्या गलत था, लेकिन मेरा ऐप अब फिर से सिम्युलेटर और उपकरणों में चल रहा है।


0

मुझे IOS5 से IOS6 में अपग्रेड करने में एक समान समस्या थी। यह मॉडल के नाम के साथ एक संवेदनशील मामला था।

यकीन नहीं होता कि यह किसी की मदद करता है।



0

ठीक है, मैं पहले एक आधा समाधान बताऊंगा, यह तब काम करेगा जब आप ऐप को फिर से इंस्टॉल करेंगे (सिम्युलेटर या डिबगर डिवाइस में)। लेकिन यह सुनिश्चित करने के लिए एक वास्तविक समाधान नहीं है। उदाहरण के लिए, यदि आप अपने एप्लिकेशन को अपडेट कर रहे हैं, तो ऐसा न करें या आपका नया संस्करण क्रैश हो सकता है क्योंकि उपयोगकर्ता इसे फिर से इंस्टॉल नहीं करेंगे, वे इसके बजाय अपडेट बटन का उपयोग करेंगे।

जैसा कि मैंने समझा, यह समस्या ज्यादातर तब होती है जब आप डेटा मॉडल फ़ाइल का नाम बदलते हैं। कारण इस तरह हो सकता है
:। जब आप पहली बार ऐप चलाते हैं, तो यह "data_model_1" जैसे ऐप बंडल में एक डेटा मॉडल फ़ाइल बना रहा है। यह सृष्टि पहली बार ही होती है।
। जब आप फ़ाइल नाम को अपडेट करते हैं और ऐप को फिर से चलाते हैं, तो यह नहीं मिल पाएगा क्योंकि अभी भी "data_model_1" फ़ाइल है, लेकिन आप इसे "data_model_2" देखने के लिए कह रहे हैं। यह कैसे मिल सकता है, इसे अभी तक नहीं बनाया गया है और जब तक आप नए फ़ाइल नाम के साथ ऐप को स्थापित नहीं करते हैं, तब तक यह नहीं होगा।

इसलिए, यदि यह आपके ऐप का पहला संस्करण है और सिम्युलेटर या डिवाइस पर फिर से इंस्टॉल करना आपके प्रोजेक्ट को नुकसान नहीं पहुंचाता है, तो इसके लिए जाएं। और, iOS डेवलपर लाइब्रेरी पर कोर डेटा मॉडल वर्जनिंग और डेटा माइग्रेशन गाइड की जांच करें , शायद यह वही है जो आपको चाहिए।

संपादित करें: यदि पुनर्स्थापना काम नहीं करती है, तो पहले स्थापना रद्द करने का प्रयास करें, फिर सफाई परियोजना, फिर सब कुछ बंद करें, परियोजना को फिर से खोलें और + चलाएं। वह काम करना चाहिए।


0

यदि आपका प्रोजेक्ट सिम्युलेटर पर काम करता है, लेकिन डिवाइस पर नहीं, तो डिबग-बिल्ड के बजाय अपने डिवाइस पर रिलीज़-बिल्ड चलाने का प्रयास करें।

अपनी परियोजना का चयन करें -> उत्पाद -> योजना संपादित करें -> कॉन्फ़िगरेशन बनाएँ [DEBUG -> RELEASE]

अब प्रोजेक्ट को फिर से चलाएं, यह काम करेगा।


0

मैं भी इस समस्या का सामना कर रहा हूं, लेकिन जब मैं ModelName.xcdatamodeldफ़ाइल बदल रहा हूं तो यह काम कर रही है। इसलिए मुझे लगता है कि ModelName.xcdatamodeld फ़ाइल को ठीक से नहीं जोड़ा गया है, इसलिए एक बार ऐप को चेक करें और साफ़ करें और इसे चलाएं।


0

नामकरण समस्या को ठीक करने के बाद, त्रुटि बनी रही। फिर यह Xcode 5 को फिर से शुरू करने के बाद काम किया। यह स्वचालित रूप से वही कर सकता है जो यहां दिए गए कुछ मैनुअल लिंकिंग सुझावों की तरह है।


0

मेरे लिए समस्या इस तथ्य के कारण थी कि मैंने अपने मॉडल को सैंडबॉक्स प्रोजेक्ट से अपने वास्तविक प्रोजेक्ट पर चिपका दिया। हमेशा अपने मॉडल को उस परियोजना के भीतर से उत्पन्न करना सुनिश्चित करें जो मॉडल का उपयोग किया जा रहा है।


0

जब मैं मैं इस एक ही त्रुटि का सामना करना पड़ा का नाम बदला.xcdatamodel xcode से फ़ाइल और एप्लिकेशन प्रतिनिधि नाम बदल नाम बदल दिया है जहाँ भी यह आवश्यक था, लेकिन मैं अभी भी एक ही त्रुटि मिली। सुझाई गई किसी भी प्रक्रिया ने मेरे लिए काम नहीं किया।

फिर मैंने फ़ोल्डर को खोला Finderऔर फ़ाइल .xccurrentversionके साथ एक अतिरिक्त फ़ाइल भी पाया .xcdatamodel। मैंने इसे TextEditऐप में खोला और इसे बदल दिया:

<dict>
    <key>_XCCurrentVersionName</key>
    <string>Your_Renamed_Model_FileName.xcdatamodel</string>
</dict>

मैं Xcode 6.4, OSX Yosemite 10.10.1 के साथ इसका उपयोग कर रहा हूं

मुझे उम्मीद है यह मदद करेगा!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.