শূন্য মডেল সহ কোনও এনএসপিএসসিস্ট্যান্টস্টোর সমন্বয়কারী তৈরি করতে পারে না


96

কোর ডেটাতে আমার প্রথম ক্র্যাক হয়েছে এবং আমার ডিভাইসে আমার কোডটি চালানোর সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি, তবে এটি সিমুলেটরটিতে দুর্দান্ত কাজ করে ..

* Uncaught ব্যতিক্রম 'NSInvalidArgumentException', কারণে অ্যাপ্লিকেশন সমাপন: 'একটি শূন্য মডেল সঙ্গে একটি 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;
    }

সম্পাদনা

আমি অ্যাপলের কোরডেটাবুকগুলি থেকে পরিচালিতঅবজেক্ট কনটেক্সট পদ্ধতিটি (নীচে) অনুলিপি করে আটকিয়েছি এবং এটি এখন কার্যকর হয়..তাই নিশ্চিত নয় কেন যদিও

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

আরে এটি প্রথম URL URL রিসোর্স প্যারামিটারে "মডেল" শব্দটি যুক্ত করার মতো সহজ হতে পারে .... হ্যাঁ, আমারও একই সমস্যা ছিল। তারপরে আমি কমান্ড লাইনে আসল .app সামগ্রীগুলি পরীক্ষা করে জানতে পেরেছিলাম যে .momd আসলে তৈরি হচ্ছে being সুতরাং এটি ব্যবহার করে দেখুন: [[এনএসবান্ডেল মেইনবান্ডেল] ইউআরএলফোর্ডসোর্স: @ "রাগবিওনটিভিমোডেল" এক্সটেনশন সহ: @ "মমড"];
পোস্টকোডিজম

NSString *basePath = [paths firstObject];
উইলিয়াম এন্টারিকেন

উত্তর:


157

আমার কাছে মূল পোস্টের মতো একই ত্রুটি বার্তা ছিল। আমি কয়েক ঘন্টা ধরে এই নিয়ে কুস্তি করছিলাম। এটি আমার অ্যাপডেলিগেট.এম এ এই লাইনটি ছিল।

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

এই ত্রুটি বার্তাটি অনুসন্ধান করার জন্য এবং এই থ্রেডটি খুঁজে বের করার জন্য যার যার .... এটি প্রথমে চেষ্টা করুন।

আপনাকে অবশ্যই এটি নিশ্চিত করতে হবে যে এটি যেখানে বলেছে [এক্সসিডিটামোডেল্ডের সাথে একই]] যে এটি !!! কোনও কারণে, আমার সেখানে আমার প্রকল্পের নাম ছিল এবং ডেটা মডেলের নাম ছিল না।

এটি পরিবর্তন হয়েছে এবং এটি সরাসরি কাজ করেছে .....

অবদানের জন্য রক অ্যান্ড মুলারকে ধন্যবাদ ....... আপনি আমার দিন বাঁচিয়েছেন !!

গাজ


4
এটি আমার জন্য কাজ করে এমন মন্তব্যটি। ঐন্দ্রজালিক নাম আমার অ্যাপ্লিকেশানের খুঁজছেন ছিল ছিল blahথেকে blah.xcdatamodeld। আপনাকে ধন্যবাদ ইন্টারনেট, এবং স্ট্যাকওভারফ্লো।
এসিডেঞ্জার

আমার কাছে "Model.xcdatamodeld", যুক্তি হিসাবে "মডেল" এ পরিবর্তিত হয়েছে। তবে এক্সকোড এটি লোড করতে অস্বীকার করেছে, তবে এই ফাইলটি আসলে সেখানে রয়েছে! জানি না, কী হচ্ছে।
দারম্যান আমানবায়েভ

কি দারুন. থ্যাঙ্কস কিছুক্ষন আমার মাথাটা ধাক্কা খাচ্ছিল।
সানি এলফিশাবি

স্টোর ইউআরএল সম্পর্কে কী?
মোরালকোড

54

প্রথম যাচাই করুন:

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

আপনি যদি কোনও শূন্য মান পান তবে সমস্যাটি এখানেই রয়েছে

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

সুতরাং, "" মম "দ্বারা @" মম "পরিবর্তন করার চেষ্টা করুন


4
আপনার অধিকার. এটি নাল এবং সুতরাং এই লাইনটি ত্রুটি ঘটায়: __ CPersstoreCoordinator = [[এনএসপার্সেন্টিস্টস্টোরকর্ডিনেটর বরাদ্দ] #WithManagedObjectModel: [স্ব পরিচালিতঅবজেক্টমোডেল]]; mom মায়ের কাছে পরিবর্তন যদিও কিছু ঠিক করছে বলে মনে হচ্ছে না
ডমিনিক উইলিয়ামস

4
সম্ভবত modelURLহয় nil। সর্বাধিক সাধারণ কারণটি টাইপ ইন RugbyOnTv। নোট করুন যে এটি কেস-সংবেদনশীল।
রব নেপিয়ার

4
"মম" থেকে "মা" তে পরিবর্তন করা আমার পক্ষেও কাজ করেছিল। ধন্যবাদ কিন্তু কেন? এক্সকোড কেন জেনারেটিং কোড যা কাজ করে না? বেসিক টেমপ্লেটগুলি কাজ করতে আমি কেন এই জাতীয় অস্পষ্ট সমাধানগুলি খুঁজে পাই?
রবারবার

10
সম্প্রতি আমার মডেলের ২ য় সংস্করণ উপস্থাপন করার পরে আমি এটি আবার মোমডে পরিবর্তন করতে হয়েছিল। দেওয়া হয়েছে যে মডেল সংস্করণ ধারকটির এক্সডটামোডেলডের একটি এক্সটেনশন রয়েছে বলে আমি মনে করি যে এখানে কী চলছে তা আমরা অনুমান করতে পারি। "মমড" একাধিক সংস্করণযুক্ত মডেলের জন্য এবং "মম" এমন মডেলগুলির জন্য যেখানে সংস্করণ নেই।
জেরাল্ড

4
আমি কোডটিকে একটি নতুন প্রকল্প [আইওএস 7] ভারব্যাটিমে অনুলিপি করেছি এবং এটি মূলত মায়ের ছিল তবে মায়ের পরিবর্তনে এটি ঠিক করা হয়েছে। আমি এগুলি ছাড়া কীভাবে সমাধানটি পেতাম তা আমি জানিনা, তাই ধন্যবাদ :)
ইয়ান ক্লে

20

আমি এক্সকোড 4.3.2 এবং আইওএস 5 এর সাথে একটি অদ্ভুত সমস্যাটি अनुभव করেছি।

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

একটি বৈধ URL প্রদান করে তবে returns

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

একটি নাল NSManagedObjectModel প্রদান করে। ডকুমেন্টেশন চেক করার পরে , দেখে মনে হচ্ছে এনএসম্যানেজডঅবজেক্টমোডেলের কোনও ফাইলের দরকার আছে যেখানে NAME_OF_THE_MODEL.momd এমন একটি ডিরেক্টরি যা একটি NAME_OF_THE_MODEL.mom ফাইল ধারণ করে। ইউআরএল পরিবর্তন করা

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

তারপর কাজ করে। যদিও এক্সকোড এমন কোড তৈরি করে যা নিজের সাথে কাজ করে না এমনটি অদ্ভুত বলে মনে হচ্ছে ...


4
এই নির্দিষ্ট সমস্যাটি অতিরিক্ত মডেল সংস্করণ তৈরি করে এবং এরপরে Xcode খোলা থাকার সময় এটি ম্যানুয়ালি মুছে ফেলার চেষ্টা করে। এর ফলে একরকম দুর্নীতির সৃষ্টি হয়। আপনি মোম ডিরেক্টরিতে নির্দিষ্ট মডেল সংস্করণগুলিতে যাবেন না।
মাইক ওয়েলার

কুল @ মাইকওয়েলার, জেনে রাখা ভাল। আপনি কি জানেন যে মেটাডাটাটি ম্যামড ডিরেক্টরিতে মায়ের ফাইলকে নির্দেশ করে?
এক্সস্টার

আমি এটি মুছে ফেলার চেষ্টা করছিলাম না, তবে আমার কাছে এই সমস্যাটি ছিল এবং সমাধান পোস্টটি আমার জন্য কাজ করেছিল, বিশেষত, আমি কেবল এটি পরীক্ষা করার জন্য একটি চেক যুক্ত করেছি এবং এটি উপরে যদি কোডটি যুক্ত করা হয় তবে: (_managedObjectContext == নিল) {এনএসআরএল * মডেল ইউআরএল = [[এনএসবান্ডেল মেইনবান্ডেল] ইউআরএলফোর্সোসোর্স: @ "মডেল" এক্সটেনশন: @ "মম" সাব-ডাইরেক্টরি: @ "মডেল.মোমড"]; _managedObjectModel = [[NSManagedObjectModel বরাদ্দ] initWithContentsOfURL: মডেল URL]; }
ডেভিড ভ্যান ডুগেরেন

19

আমার এই সমস্যাটি ছিল এবং "মমস" কে "মা" তে পরিবর্তন করা কিছুই করেনি। এটি ঠিক করতে আমাকে xcdatamodelId ফাইল> প্যাকেজ বিষয়বস্তু প্রদর্শন করতে ডান ক্লিক করতে হবে তারপরে লুকানো .xcurrentversion ফাইলটি মুছতে হবে।

PS: আমি ডেটা মডেল ফাইলের নাম পরিবর্তন করার পরেই এই সমস্যাটি শুরু হয়েছিল।


4
প্রত্যেকের জন্য নিম্নলিখিত সমস্যার মুখোমুখি হচ্ছে: এক্সসিডিটামোডেল্ড ফাইলটির নাম পরিবর্তন করার পরে পরিচালিতঅজেক্টমোডেল শূন্য হচ্ছে: এই উত্তরটি সেরা! ধন্যবাদ জেডিএক্স, আপনার উত্তর আমাকে অনেক সাহায্য করেছে!
ডুমোকো

এটি মুছে ফেলার পরিবর্তে আপনি শেষ পর্যন্ত এটি সম্পাদনা করতে পারেন ফাইলের নামটি ইউএল এক্সসিডিটামোডেলের সর্বশেষ সংস্করণে সংরক্ষণ করতে
ফুরিনস

13

এই ত্রুটির আরেকটি উত্স, কখনও কখনও এক্সকড বিল্ডে ডেটা মডেলটি অন্তর্ভুক্ত করে না।

আপনার টার্গেটের বিল্ড পর্যায়গুলি পরীক্ষা করে দেখুন এবং নিশ্চিত করুন যে * .xcdatamodeld ফাইলটি সংকলন উত্স বিভাগে অন্তর্ভুক্ত রয়েছে।


এটি আমার জন্য এটি স্থির করে দিয়েছে।
বেন থমাস

এটি আমার জন্য কাজ করেছে। এটি হতাশাজনক এবং ডিবাগ করা কঠিন যখন এটি সিমুলেটারে কাজ করে এবং বাস্তব ডিভাইসে নয়!
বিশাল ঝিমিরে

9

সম্ভবত যা ঘটেছিল তা হ'ল অ্যাপল এর উত্স কোড থেকে আপনার এক্সসিডিটামোডেল ফাইলটি একটি এক্সসিডিটামোডেল (ডি ছাড়াই) ফাইলে রূপান্তরিত হয়েছে এবং সে কারণে সেগুলি একই হিসাবে বিবেচনা করা হয় না।

এটি ঠিক করার দ্রুততম উপায় হ'ল আপনার প্রকল্প নেভিগেটরে এবং মেনু বারে xcdatamodel ফাইলটি নির্বাচন করা to

Editor->Add Model Version...

এবং আপনার মডেলের একটি নতুন সংস্করণ যুক্ত করুন। নতুন সংস্করণে সমস্ত পরিবর্তন করুন।

এটি এক্সকোড 5 এ কাজ করে


দুর্ভাগ্যক্রমে এই বিকল্পটি
এক্সকোড

আপনাকে xcdatamodel ফাইলটি নির্বাচন করতে হবে তা উল্লেখ করতে ভুলে গেছেন। মন্তব্য প্রতিফলিত উত্তর সম্পাদিত।
লুই ক্রিমেন

8

আমি db ফাইল যুক্ত করে এটি সমাধান করি Copy Bundle Resources

আপনার প্রকল্পের মূলটিতে যান >> আপনার লক্ষ্য নির্বাচন করুন >> পর্যায়গুলি তৈরি করুন >> বান্ডিল সংস্থান অনুলিপি করুন। আপনার xcdatamodeld ফাইলটি এখানে যুক্ত করা হয়েছে তা নিশ্চিত করুন।

এখানে চিত্র বর্ণনা লিখুন

পোস্ট করা সমাধানগুলির কোনওটিই আমার পক্ষে কাজ করেনি। সুতরাং, আশা করি এই পোস্টটি কেউ কাউকে সাহায্য করবে। আমার অ্যাপ্লিকেশনটি কেবল বিটিডব্লিউতে মুক্তি দেয় in পাঠ শিখেছি। সর্বদা পরীক্ষার রিলিজ বিল্ড!

বিটিডাব্লু, আমি এই এসও পোস্টটি সবচেয়ে সহায়ক https://stackoverflow.com/a/6708837/951349 পেয়েছি ।


6

আমি @ ডমিনিক উইলিয়ামসের সাথে একই সমস্যা পেয়েছি

নীচে মোম ফাইলের নামটি পরিবর্তন করার চেষ্টা করুন (আপনি এটি managedObjectModelডিফল্টরূপে পদ্ধতিতে দেখতে পারেন ), যা [file name].xcdatamodeldআপনি তৈরি করা ফাইলটির মতোই :

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

5

আমারও একই সমস্যা ছিল। সমাধানটি ছিল 2 টি উত্তর মিশ্রন:

1) ইউআরএলফোর্সোর্স কলটিতে আমাকে "উপ ডিরেক্টরি" পরামিতি যুক্ত করতে হয়েছিল

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

2) আমি জানি না এমন একটি কারণে, প্রকল্পটি সংকলন করার সময় ডেটা মডেলটি অন্তর্ভুক্ত ছিল না। আমাকে এটিকে "বিল্ড পর্যায় / সংকলন সংস্থানসমূহ" এ ম্যানুয়ালি যুক্ত করতে হয়েছিল।

উপরের সমাধানগুলির মধ্যে একটির সাথে আমার অ্যাপ্লিকেশনটি কার্যকর হয়নি।


4

আপনি যে সমস্যার কথা বলছেন তার সমাধান সহজ। মডেল ইউআরএলটিতে "মোমড" এর পরিবর্তে ফাইল এক্সটেনশানটিকে "মম" এ পরিবর্তন করুন। সম্পন্ন.


4

আমি এখানে সমস্ত সমাধান চেষ্টা করেছিলাম, এবং তাদের কোনওটিই কাজ করে নি। আমি প্রকল্পটির নাম পরিবর্তন করার পরে আমার সমস্যাটি উপস্থিত হয়েছিল। স্পষ্টতই, সংকলনের সময় এক্সকোড পুরানো মামড ফাইলটি ভুল জায়গায় খুঁজে দেখছে।

যে কেউ সাফল্য ছাড়াই উপরোক্ত সমস্ত সমাধান চেষ্টা করেছেন, আপনার .xcdatamodeldফাইলের পুরো পথটি পরীক্ষা করে দেখুন । এটাই আমার পক্ষে কাজ করেছে।


4

আমার একই সমস্যা ছিল, এটি আইওএস 6-তে কাজ করেছে তবে আইওএস 5-তে নয়। এইভাবে আমি এটি সমাধান করেছি:

  1. এক্সকোডে একটি নতুন মডেল সংস্করণ তৈরি করুন। (নির্বাচন করুন .xcdatamodeld, সম্পাদক মেনু খুলুন এবং "মডেল সংস্করণ যুক্ত করুন ..." ক্লিক করুন)
  2. সংকলন করুন এবং নিশ্চিত করুন যে নতুন সংস্করণটি কাজ করে।
  3. পুরানোটিকে বর্তমান সংস্করণ হিসাবে সেট করুন। ( .xcdatamodeldসংস্করণযুক্ত কোর ডেটা মডেলের অধীনে ফাইল পরিদর্শকের "বর্তমান" )
  4. .xcdatamodeldএক্সকোডে ফাইলের রেফারেন্স সরান
  5. .xcdatamodeldফাইন্ডারে ফাইলটি ডান ক্লিক করুন এবং "প্যাকেজ বিষয়বস্তু দেখান" নির্বাচন করুন
  6. .xcdatamodelআপনি যে নতুনটি চান না তা মুছুন
  7. .xcdatamodeldএক্সকোডে পুনরায় যুক্ত করুন
  8. সংকলন এবং হাসি

(এটি এখানে আমি কীভাবে একটি মডেল সংস্করণ মুছতে পেলাম: এক্সকোডে পুরানো / অব্যবহৃত ডেটা মডেল সংস্করণটি কীভাবে মুছবেন )


টেক স্যার মাইকেট! এটি খুব সহায়ক ছিল।
মাইকেল ডোনার

4

আমি কোনও কোড পরিবর্তন না করেই সমস্যার সমাধান করি।

আমি এক্সকোডে ফাইলটি টেনে আনার পরিবর্তে ফাইল-> ফাইল যুক্ত করার মাধ্যমে ModelName.xcdatamodeld যুক্ত করি।

 NSString *path=@"ModelName";

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

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

1

আমার পক্ষে সমস্যাটি হ'ল আমি ডাটাবেসের নামে বেশ কয়েকটি চরিত্রের কেস পরিবর্তন করেছি।

একটি নতুন প্রকল্প শুরু করার সময়, এক্সকোড স্বয়ংক্রিয়ভাবে প্রকল্পের নাম থেকে সমস্ত কিছু সেট আপ করে। আপনি যদি আপনার প্রকল্পটিকে "রাগবিওন্টভি" বলে কল্পনা শুরু করেন এবং পরে "রাগবিওএনটিভি" তে পরিবর্তন করার সিদ্ধান্ত নিয়েছেন এবং অনুসন্ধান এবং প্রতিস্থাপন করেন, তা এটি ভেঙে দেবে। (নাম কেস-সংবেদনশীল তা নির্দেশ করার জন্য রবকে ক্রেডিট)


1

আমি ঘন্টা ধরে উত্তর খুঁজছি এবং কিছুই কাজ করে নি। তবে আমি হঠাৎ এই নিবন্ধটি খুঁজে পেয়েছি । সুতরাং এটি অনুসারে, সমস্যাটি অ্যাপডেলিগেট.এম এর এই অংশে রুট কন্ট্রোলার সেট করার ক্ষেত্রে ছিল:

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

আসলে আপনার সংজ্ঞা দেওয়া উচিত যে কোনও রুট কন্ট্রোলার আপনার কোরডেটা সংযোগটি দেবে। এবং আমার ক্ষেত্রে আমার কাছে অন্য ভিউগুলির সাথে একটি ট্যাববারকন্ট্রোলার সংযুক্ত ছিল, তাই আমার টার্গেট করা ভিউ রুট কন্ট্রোলারটিকে ট্যাববার হিসাবে সংজ্ঞায়িত করা হয়েছিল এবং এটি ত্রুটির কারণ হয়েছিল। আমি বদলে গেছি

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

প্রতি

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

এবং সবকিছু কাজ করে।


1

আমি জানি এটি আপনার সমস্যার সমাধান করে না তবে গতকাল আমি এই সমস্যায় পড়েছিলাম যা আমাকে কয়েক ঘন্টা ধরে জর্জরিত করেছিল, @ ডমিনিক উইলিয়ামস পোস্ট করা সমাধানটি আমাকে একটি অ্যারেআইন্ডেক্সআউটআউটফাউন্ডস এক্সসেপশন দিয়েছে (উদ্দেশ্য-সি সমতুল্য যাই হোক না কেন)।

আমি এখনও অবজেক্টিভ-সি / এক্সকোডের সাথে খুব ভাল আছি না তবে আমি একটি আইওএস অ্যাপে কাজ করছি যা আমাদের সংস্থা বহিরাগতভাবে বিকশিত হয়েছিল। দুর্ভাগ্যক্রমে, তারা প্রায়শই কী-বোর্ড কীভাবে ব্যবহার করবেন তা ভুলে যেতেন এবং বড় বড় অক্ষরগুলি আন্তঃবিন্যভাবে ব্যবহার করতেন বা বৈশিষ্ট্যগুলি ভুলভাবে বানাতেন তবে ফিরে যেতে এবং এটি পরিবর্তন করতে খুব অলস ছিলেন। তারা এক্সকোড প্রকল্পের নামে একটি মূলধনপত্র ব্যবহার করেছিল যেখানে এটি হবার কথা ছিল না (আমাদের পণ্যের নাম একটি মূলধন ব্যবহার করে না) এবং আমাকে ফিরে যেতে হয়েছিল এবং এই বড় হাতের অক্ষরের প্রতিটি ঘটনা একটি ছোট-বড় ক্ষেত্রে পরিবর্তন করতে হয়েছিল ; যার মধ্যে প্রকল্পের নাম, মূল ডেটা ফাইল, শত শত ভেরিয়েবল ইত্যাদি অন্তর্ভুক্ত ছিল

যাইহোক, একবার আমি এটি করে ফেললে আমি এই ত্রুটির মধ্যে পড়েছিলাম এবং কোনও সমাধানই আমার জন্য এটি ঠিক করে নি was আমি নিশ্চিত করেছিলাম যে সমস্ত ইউআরএল নাম সঠিক ছিল, প্রকল্প সাফ হয়েছে, অ্যাপটি আনইনস্টল করা হয়েছে, ফোন পুনরায় চালু করা হয়েছে, কোনও লাভ নেই। আমি হাল ছেড়ে দিয়ে আমার ম্যাকটি অফ করে দিয়েছিলাম এবং দিনের জন্য বাড়িতে চলে গেলাম। আমার অবাক করার বিষয়, আমি এই সকালে ফিরে এসেছি এবং সবকিছু ঠিকঠাক মনে হয়েছিল!

কেন এটি কাজ করেছে আমার কোনও ধারণা নেই তবে যদি আপনি আটকে থাকেন তবে আপনার ম্যাকটি পুনরায় চালু করার চেষ্টা করুন।


1

কেউ যদি একই সমস্যার কারণে আটকে থাকে। আপনি ডাটাবেসটি সঠিকভাবে সংযুক্ত করেছেন তা নিশ্চিত করুন (যেহেতু আপনি সম্ভবত কোনও উদাহরণ থেকে কোডটি অনুলিপি করেছেন)। অ্যাপলিজেটে ম্যানেজডঅবজেক্টমোডেল এবং ক্রমাগত স্টোরকোর্ডিনেটর পদ্ধতিতে
কেবল ডাটাবেসের নাম আপডেট করুন ।


1

আমারও একই সমস্যা ছিল, অর্থাৎ

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

ফিরে আসে নি, কারণ কোনও এমএমডি ফাইল উত্পন্ন হয়নি।

কারণটি ছিল অ্যাপ্লিকেশন ডিরেক্টরিতে (যেমন মাইগ্রেটএপ / মাইগ্র্যাটএপ.অ্যাপ) এক্সকোড মাইমোডেল.এক্সসিডিটামোডেলটি মাইমোডেল.এক্সসিডিটামোডেল ফাইল (ম্যামক ব্যবহার করে) তৈরি করার পরিবর্তে অনুলিপি করেছিল।

সমাধানটি ছিল XMode প্রকল্প ব্রাউজারের ভিতরে MyModel.xcdatamodeld এর উল্লেখ মুছে ফেলা এবং এটি আবিষ্কারক থেকে প্রকল্পে ফিরে টেনে আনতে। এর পরে এক্সকোড বুঝতে পারল এটি একটি এমওএমডিতে সংকলন করা দরকার।


1

আমি উত্পন্ন অ্যাপটি মুছে ফেলার পরে আমার কোথাও এই সমস্যা ছিল ~/Library/Application Support/iPhone Simulator। কোনওভাবে এর ফলে পরবর্তী বিল্ডগুলি সিমুলেটর এবং ডিভাইসগুলিতে ব্যর্থ হয়েছিল। যুগে যুগে কোরিডাটার সাথে করার জন্য কোনও কিছুই পরিবর্তন করেনি তবে এটি এর সাথে ব্যর্থ হবে Cannot create an NSPersistentStoreCoordinator with a nil model। উপরের কয়েকটি জিনিস চেষ্টা করে দেখলাম কিছুই হয়নি।

আমি ভিতরে ভিতরে মায়ের ফাইল সহ উত্পন্ন মোম ফোল্ডারটি দেখতে পেতাম। সিমুলেটারের অ্যাপ্লিকেশনটি উভয়ই দেখতে পেল কিন্তু স্ক্লাইট ফাইলটি তৈরি করতে ব্যর্থ হয়েছিল।

এটি কী সমাধান করেছে তা Xcode এ আমার xcdatamodeld ফাইলে একটি সত্তার একটি বৈশিষ্ট্য যুক্ত করে এবং তাৎক্ষণিকভাবে এটি মোছা হয়েছিল। আমি আশা করছিলাম যে এটি স্ক্র্যাচ থেকে সমস্যার কারণ যা ঘটছে তা এক্সকোডকে পুনরুত্থিত করবে এবং এটি কাজ করছে বলে মনে হচ্ছে work আসলে কী ভুল ছিল তা এখনও পরিষ্কার নয়, তবে আমার অ্যাপটি এখন সিমুলেটর এবং ডিভাইসে চলছে।


0

আইওএস 5 থেকে আইওএস 6 এ আপগ্রেড করতে আমার ঠিক একইরকম সমস্যা হয়েছিল। দেখা যাচ্ছে এটি মডেলের নাম সহ কেস সংবেদনশীল সমস্যা।

এটি কারও সাহায্য করে কিনা তা নিশ্চিত নয়।



0

ঠিক আছে, আমি প্রথমে একটি অর্ধ-সমাধানটি বলব, আপনি যদি অ্যাপটি পুনরায় ইনস্টল করেন (সিমুলেটর বা ডিবাগার ডিভাইসে) এটি কাজ করবে। তবে এটি নিশ্চিতভাবে আসল সমাধান নয়। উদাহরণস্বরূপ, আপনি যদি নিজের অ্যাপ্লিকেশনটি আপডেট করছেন তবে তা করবেন না বা আপনার নতুন সংস্করণ ক্র্যাশ হতে পারে কারণ ব্যবহারকারীরা এটি পুনরায় ইনস্টল করবেন না, তারা পরিবর্তে আপডেট বোতামটি ব্যবহার করবেন।

আমি যেমন বুঝতে পেরেছি, এই সমস্যাটি বেশিরভাগ ক্ষেত্রে ঘটে যখন আপনি ডেটা মডেল ফাইলের নাম পরিবর্তন করেন। কারণ ভালো হতে পারে:
। আপনি যখন প্রথমবার অ্যাপটি চালাচ্ছেন, এটি "ডেটা_মোডেল_1" এর মতো অ্যাপ্লিকেশন বান্ডলে একটি ডেটা মডেল ফাইল তৈরি করছে। এই সৃষ্টিটি কেবল প্রথমবারের জন্য ঘটে।
। আপনি যখন ফাইলটির নাম আপডেট করেন এবং অ্যাপটি আবার চালিত করেন, এটি সন্ধান করতে পারবেন না কারণ এখনও "ডেটা_মডেল_1" ফাইল রয়েছে তবে আপনি এটি "ডেটা_মোডেল_2" সন্ধান করতে বলছেন। এটি কীভাবে সন্ধান করতে পারে, এটি এটি এখনও তৈরি করেনি এবং আপনি নতুন ফাইল নামের সাথে অ্যাপ্লিকেশন ইনস্টল না করে তা না করে।

সুতরাং, যদি এটি আপনার অ্যাপ্লিকেশনটির প্রথম সংস্করণ এবং সিমুলেটর বা ডিভাইসে পুনরায় ইনস্টল করা আপনার প্রকল্পের ক্ষতি না করে তবে এটির জন্য যান। অন্যথায়, আইওএস বিকাশকারী লাইব্রেরিতে কোর ডেটা মডেল সংস্করণ এবং ডেটা মাইগ্রেশন গাইড পরীক্ষা করুন, সম্ভবত এটি আপনার প্রয়োজন।

সম্পাদনা: যদি পুনরায় ইনস্টল করা কাজ না করে, প্রথমে আনইনস্টল করার চেষ্টা করুন, তারপরে প্রকল্পটি সাফ করুন, তারপরে সবকিছু বন্ধ করুন, প্রকল্পটি আবার খুলুন এবং বিল্ড + রান করুন। এটা কাজ করা উচিত।


0

যদি আপনার প্রকল্পটি সিমুলেটারে কাজ করে তবে ডিভাইসে নয়, ডিবাগ-বিল্ডের পরিবর্তে আপনার ডিভাইসে রিলিজ-বিল্ড চালানোর চেষ্টা করুন।

আপনার প্রকল্প নির্বাচন করুন -> পণ্য -> প্রকল্প সম্পাদনা করুন -> বিল্ড কনফিগারেশন [ডিবগ -> রিলিজ]

এখন আবার প্রকল্প চালান, এটি কাজ করবে।


0

আমিও এই সমস্যার মুখোমুখি হয়েছি কিন্তু আমি যখন ModelName.xcdatamodeldফাইলটি পরিবর্তন করি তখন এটি কাজ করছে। সুতরাং আমি মনে করি ModelName.xcdatamodeld ফাইলটি সঠিকভাবে যুক্ত হয় নি, তাই একবার অ্যাপ্লিকেশনটি পরীক্ষা করে পরিষ্কার করুন এবং এটি চালান।


0

আমি নামকরণের সমস্যাটি স্থির করার পরে, ত্রুটিটি রয়ে গেল। এরপরে এটি এক্সকোড 5 পুনরায় চালু করার পরে কাজ করে This এটি এখানে দেওয়া ম্যানুয়াল লিঙ্কিং পরামর্শগুলির মতো স্বয়ংক্রিয়ভাবে একই কাজ করতে পারে।


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 দিয়ে ব্যবহার করছি

আমি আসা করি এটা সাহায্য করবে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.