Không thể tạo điều phối viên NSPers phù hợp với mô hình nil


96

Tôi đang có bản crack đầu tiên ở Core Data và tôi gặp lỗi sau khi chạy mã trên thiết bị của mình, nhưng nó hoạt động tốt trên trình mô phỏng ..

* Chấm dứt ứng dụng do ngoại lệ chưa được suy nghĩ 'NSInvalidArgumentException', lý do: 'Không thể tạo NSPers phù hợpStoreCoordinator với mô hình nil'

Một số phương pháp của tôi có thể gây ra sự cố:

    - (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;
    }

BIÊN TẬP

Tôi đã sao chép và dán phương thức ManagedObjectContext (bên dưới) từ CoreDataBooks của Apple và nó hiện hoạt động..Không thực sự chắc chắn tại sao

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

Này, nó có thể đơn giản như thêm từ "Model" vào tham số URLForResource đầu tiên .... vâng, tôi đã gặp vấn đề tương tự. Sau đó, tôi đã kiểm tra nội dung .app thực tế trong dòng lệnh và phát hiện ra rằng .momd thực sự đang được tạo. Vì vậy, hãy thử điều này: [[NSBundle mainBundle] URLForResource: @ "RugbyOnTvModel" withExtension: @ "momd"];
PostCodeism

NSString *basePath = [paths firstObject];
William Entriken

Câu trả lời:


157

Tôi đã có chính xác thông báo lỗi giống như bài viết ban đầu. Tôi đã vật lộn với điều này trong nhiều giờ. Đó là dòng này trong AppDelegate.m của tôi.

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

Đối với bất kỳ ai ngoài đó tìm kiếm thông báo lỗi này và tìm thấy chuỗi này .... hãy thử điều này trước.

Bạn phải chắc chắn rằng nơi nó nói [giống với tên của xcdatamodeld] .... đó là nó !!! Vì lý do nào đó, tôi đã đặt tên dự án của mình trong đó chứ không phải tên mô hình dữ liệu.

Thay đổi nó và nó hoạt động ngay lập tức .....

Cảm ơn Rock & Muller đã đóng góp ....... bạn đã cứu tôi những ngày !!

Gaz.


2
Đây là nhận xét mà nó làm việc cho tôi. Cái tên kỳ diệu mà ứng dụng của tôi đang tìm kiếm là blahtừ blah.xcdatamodeld. Cảm ơn internet và stackoverflow.
acedanger

Tôi có "Model.xcdatamodeld", được thay đổi thành "Model" làm đối số. Nhưng Xcode từ chối tải nó, nhưng tệp này thực sự ở đó! Tôi không biết, chuyện gì đang xảy ra.
Darmen Amanbayev

Chà. Cảm ơn đã đập vào đầu tôi một lúc.
Sani Elfishawy

những gì về cửa hàngURL một?
MoralCode,

54

xác minh đầu tiên:

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

Nếu bạn nhận được giá trị nil có thể vấn đề là ở đây

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

Vì vậy, hãy thử thay đổi @ "momd" bằng @ "mom"


1
Quyền của bạn. Nó rỗng và do đó dòng này gây ra lỗi: `__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [tự managedObjectModel]];` Thay đổi để mẹ dường như không sửa chữa bất cứ điều gì mặc dù
Dominic Williams

3
Nhiều khả năng modelURLcũng vậy nil. Nguyên nhân phổ biến nhất là lỗi đánh máy RugbyOnTv. Lưu ý rằng điều này phân biệt chữ hoa chữ thường.
Rob Napier

1
Thay đổi "momd" thành "mom" cũng có tác dụng với tôi. Cảm ơn. Nhưng tại sao? Tại sao mã tạo XCode không hoạt động? Tại sao tôi lại tìm thấy các bản sửa lỗi khó hiểu như thế này trong SO để làm cho các mẫu cơ bản hoạt động?
hoàng

10
Gần đây, khi giới thiệu phiên bản thứ 2 của mô hình của tôi, tôi đã phải thay đổi nó trở lại momd. Cho rằng vùng chứa phiên bản mô hình có phần mở rộng là xdatamodeld, tôi nghĩ chúng ta có thể suy ra điều gì đang xảy ra ở đây. "momd" dành cho các kiểu máy có nhiều phiên bản trong khi "mom" dành cho kiểu máy không có phiên bản.
Gerald

2
Tôi đã sao chép nguyên văn mã vào một dự án mới [iOS7] và nó ban đầu là momd nhưng việc thay đổi thành mom đã sửa nó. Tôi không có ý tưởng làm thế nào tôi có thể đã tìm thấy một giải pháp mà không này, vì vậy nhờ :)
Ian Clay

20

Tôi đã gặp sự cố kỳ lạ với Xcode 4.3.2 và iOS 5.

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

trả về một URL hợp lệ nhưng

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

trả về một NSManagedObjectModel rỗng. Nhưng sau khi kiểm tra tài liệu , có vẻ như NSManagedObjectModel cần một tệp trong đó NAME_OF_THE_MODEL.momd là một thư mục chứa tệp NAME_OF_THE_MODEL.mom. Thay đổi URL thành

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

sau đó hoạt động. Có vẻ kỳ lạ mặc dù Xcode tạo ra mã không hoạt động với chính nó ...


1
Sự cố cụ thể này là do tạo ra một phiên bản mô hình bổ sung và sau đó cố gắng xóa nó theo cách thủ công trong khi Xcode đang mở. Điều này gây ra một số loại tham nhũng. Bạn không nên chuyển các phiên bản mô hình cụ thể trong thư mục momd.
Mike Weller,

tuyệt vời @MikeWeller, thật tốt khi biết. Bạn có biết đâu là siêu dữ liệu trỏ đến tệp mẹ trong thư mục momd không?
xster

Tôi đã không cố gắng xóa nó, nhưng tôi đã gặp sự cố này và giải pháp đã đăng đã phù hợp với tôi, cụ thể là tôi chỉ thêm một kiểm tra để xem liệu nó có còn không và nếu nó có thì tôi đã thêm mã đó ở trên: if (_managedObjectContext == nil) {NSURL * modelURL = [[NSBundle mainBundle] URLForResource: @ "Model" với Thư mục con mở rộng: @ "mom": @ "Model.momd"]; _managedObjectModel = [[NSManagedObjectModel Giving] initWithContentsOfURL: modelURL]; }
David van Dugteren

19

Tôi đã gặp vấn đề này và thay đổi "mẹ" thành "mẹ" không làm gì cả. Để khắc phục, tôi phải nhấp chuột phải vào tệp xcdatamodelId> hiển thị nội dung gói sau đó xóa tệp .xcurrentversion bị ẩn.

Tái bút: Sự cố này chỉ bắt đầu xảy ra sau khi tôi thay đổi tên của tệp mô hình dữ liệu.


2
Đối với mọi người gặp phải vấn đề sau: ManagedObjectModel là con số không sau khi đổi tên tệp xcdatamodeld: câu trả lời này là tốt nhất! Cảm ơn JDx, câu trả lời của bạn đã giúp tôi rất nhiều!
Dumoko

Thay vì xóa nó, bạn thậm chí có thể chỉnh sửa nó để thay đổi tên tập tin được lưu trữ lên phiên bản mới nhất của xcdatamodel Youl
furins

13

Một nguồn khác của lỗi này là đôi khi Xcode không bao gồm mô hình dữ liệu trong bản dựng.

Kiểm tra các giai đoạn xây dựng của mục tiêu của bạn và đảm bảo rằng tệp * .xcdatamodeld được bao gồm trong phần Nguồn biên dịch.


CÁi này đã sửa nó giúp tôi.
Ben Thomas

điều này đã làm việc cho tôi. Thật khó chịu và khó gỡ lỗi khi nó hoạt động trên Simulator chứ không phải trên thiết bị thực!
Bishal Ghimire

9

Điều có thể đã xảy ra là tệp xcdatamodeld của bạn từ mã nguồn của Apple đã chuyển thành tệp xcdatamodel (không có d) và do đó chúng không được coi là giống nhau.

Cách nhanh nhất để khắc phục điều này, là chọn tệp xcdatamodel trong trình điều hướng dự án của bạn và vào thanh menu

Editor->Add Model Version...

và thêm một phiên bản mới của mô hình của bạn. Thực hiện tất cả các thay đổi đối với phiên bản mới.

Điều này hoạt động trong Xcode 5


Rất tiếc, tùy chọn này không tồn tại trong Xcode 5 .. xem ở đây
abbood

Quên đề cập rằng bạn cần phải chọn tệp xcdatamodel. Đã chỉnh sửa câu trả lời để phản ánh bình luận.
Louis Cremen

8

Tôi giải quyết nó bằng cách thêm tệp db vào Copy Bundle Resources.

Đi tới thư mục gốc của dự án của bạn >> chọn mục tiêu của bạn >> Xây dựng giai đoạn >> Sao chép tài nguyên gói. Đảm bảo rằng tệp xcdatamodeld của bạn đã được thêm vào đây.

nhập mô tả hình ảnh ở đây

Không có giải pháp đã đăng nào phù hợp với tôi. Vì vậy, hy vọng bài đăng này sẽ giúp ích cho ai đó. Ứng dụng của tôi chỉ bị lỗi trong bản phát hành btw. Bài học kinh nghiệm. Luôn kiểm tra các bản dựng phát hành!

BTW, tôi thấy bài đăng SO này hữu ích nhất https://stackoverflow.com/a/6708837/951349 .


6

tôi gặp vấn đề tương tự với @Dominic Williams

hãy thử thay đổi tên tệp momd ở bên dưới (bạn có thể tìm thấy tên này trong managedObjectModelphương thức mặc định), giống như [file name].xcdatamodeldtệp bạn đã tạo:

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

5

Tôi đã từng gặp vấn đề tương tự. Giải pháp là sự kết hợp của 2 câu trả lời:

1) Tôi đã phải thêm thông số "thư mục con" vào lệnh gọi URLForResource

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

2) Vì lý do gì tôi không biết, mô hình dữ liệu không được đưa vào khi dự án được biên dịch. Tôi đã phải thêm nó theo cách thủ công vào "Tài nguyên xây dựng giai đoạn / Biên dịch".

Chỉ với một trong các giải pháp trên, ứng dụng của tôi không hoạt động.


4

Giải pháp cho vấn đề bạn nói đến rất đơn giản. Thay đổi phần mở rộng tệp thành "mom" thay vì "momd" trong URL mô hình. Làm xong.


4

Tôi đã thử tất cả các giải pháp ở đây, và không có giải pháp nào hoạt động. Sự cố của tôi xuất hiện sau khi tôi đổi tên dự án. Rõ ràng, Xcode tiếp tục tìm kiếm tệp momd cũ ở sai vị trí trong quá trình biên dịch.

Đối với bất kỳ ai đã thử tất cả các giải pháp trên mà không thành công, hãy thử kiểm tra đường dẫn đầy đủ của .xcdatamodeldtệp của bạn . Đó là những gì đã làm việc cho tôi.


4

Tôi đã gặp vấn đề tương tự, nó hoạt động tốt trên iOS6 nhưng không hoạt động trên iOS5. Đây là cách tôi đã giải quyết nó:

  1. Tạo phiên bản Model mới trong xcode. (chọn .xcdatamodeld, mở menu Trình chỉnh sửa và nhấp vào "Thêm phiên bản mô hình ...")
  2. Biên dịch và đảm bảo rằng phiên bản mới hoạt động.
  3. Đặt cái cũ làm phiên bản hiện tại. ("Hiện tại" trong Trình kiểm tra tệp cho .xcdatamodeldMô hình dữ liệu cốt lõi được tạo phiên bản)
  4. Xóa tham chiếu đến .xcdatamodeldtệp trong xcode
  5. Nhấp chuột phải vào .xcdatamodeldtệp trong Finder và chọn "Hiển thị nội dung gói"
  6. Xóa cái mới .xcdatamodelmà bạn không muốn
  7. Thêm lại mã .xcdatamodeldtrong xcode
  8. Biên dịch và mỉm cười

(Đây là nơi tôi tìm thấy cách xóa phiên bản Mô hình: Cách xóa Phiên bản mô hình dữ liệu cũ / không sử dụng trong Xcode )


Tack så mycket! Điều này rất hữu ích.
Michael Dorner

4

Tôi giải quyết vấn đề mà không cần thay đổi bất kỳ mã nào.

Tôi thêm ModelName.xcdatamodeld thông qua File-> Add File thay vì kéo tệp vào Xcode.

 NSString *path=@"ModelName";

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

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

1

Về phía tôi, vấn đề là tôi đã thay đổi trường hợp của một vài ký tự trong tên cơ sở dữ liệu.

Khi bắt đầu một dự án mới, Xcode sẽ tự động thiết lập mọi thứ từ tên dự án. Nếu bạn bắt đầu gọi dự án của mình là "Rugbyontv" và sau đó quyết định đổi thành "RugbyOnTV" và thực hiện tìm kiếm và thay thế, điều đó sẽ phá vỡ nó. (Tín dụng cho Rob vì đã chỉ ra rằng tên có phân biệt chữ hoa chữ thường)


1

Tôi đã tìm kiếm câu trả lời trong nhiều giờ và không có kết quả. Nhưng rồi tôi bất ngờ tìm thấy bài báo này . Vì vậy, theo điều này, vấn đề là khi thiết lập bộ điều khiển gốc trong phần này của AppDelegate.m:

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

Trên thực tế, bạn nên xác định bộ điều khiển gốc nào sẽ ủy quyền kết nối CoreData của bạn. Và trong trường hợp của tôi, tôi có một TabBarController được kết nối với các chế độ xem khác, vì vậy bộ điều khiển gốc chế độ xem bị targed của tôi được xác định là TabBar và nó gây ra lỗi. tôi đã thay đổi

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

đến

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

và mọi thứ đã hoạt động.


1

Tôi biết điều này không giải quyết được vấn đề của bạn nhưng tôi đã gặp phải vấn đề này ngày hôm qua khiến tôi khó chịu trong nhiều giờ, giải pháp mà @Dominic Williams đã đăng đã cho tôi một ArrayIndexOutOfBoundsException (bất kể Objective-C tương đương).

Tôi không giỏi lắm với Objective-C / Xcode nhưng tôi đang làm việc trên một ứng dụng iOS mà công ty chúng tôi đã phát triển (chủ yếu) ra bên ngoài. Thật không may, họ thường quên cách sử dụng bàn phím và sử dụng các chữ cái hoa thay thế cho nhau hoặc các thuộc tính chính tả không chính xác nhưng lại quá lười biếng để quay lại và thay đổi nó. Họ đã sử dụng một chữ cái viết hoa trong tên dự án xcode mà nó không được cho là có (tên sản phẩm của chúng tôi không sử dụng chữ viết hoa) và tôi phải quay lại và thay đổi mọi lần xuất hiện của chữ hoa này thành chữ thường ; trong đó bao gồm tên dự án, tệp dữ liệu cốt lõi, hàng trăm biến, v.v.

Dù sao, một khi tôi đã làm điều này, tôi đã gặp phải lỗi này và không có giải pháp nào khắc phục nó cho tôi. Tôi đã đảm bảo rằng tất cả các tên URL đều chính xác, dự án đã được làm sạch, ứng dụng đã được gỡ cài đặt, khởi động lại điện thoại, v.v. mà không có kết quả. Tôi đã từ bỏ và tắt máy Mac và về nhà trong ngày. Thật ngạc nhiên, tôi đã trở lại vào sáng nay và mọi thứ dường như hoạt động tốt!

Tôi không biết tại sao điều này lại hiệu quả nhưng nếu bạn gặp khó khăn, hãy thử khởi động lại máy Mac của bạn.


1

Nếu ai đó bị mắc kẹt vì cùng một vấn đề. Đảm bảo rằng bạn đã liên kết cơ sở dữ liệu đúng cách (vì bạn có thể đã sao chép mã trực tiếp từ một số ví dụ).
Chỉ cần cập nhật tên của cơ sở dữ liệu trong managedObjectModelpersistentStoreCoordinator phương pháp trong appdelegate.


1

Tôi đã có cùng một vấn đề, tức là

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

trả về nil, vì không có tệp .momd nào được tạo.

Lý do là trong thư mục ứng dụng (ví dụ: MyGreatApp / MyGreatApp.app) xcode đã sao chép MyModel.xcdatamodeld thay vì tạo MyModel.momd từ tệp MyModel.xcdatamodeld (sử dụng momc).

Giải pháp là xóa tham chiếu đến MyModel.xcdatamodeld bên trong trình duyệt dự án XCode và kéo nó trở lại dự án từ công cụ tìm. Sau đó, xcode nhận ra rằng nó cần phải biên dịch nó thành .momd.


1

Tôi đã gặp sự cố này sau khi xóa ứng dụng đã tạo trong ~/Library/Application Support/iPhone Simulator. Bằng cách nào đó, điều này khiến các bản dựng tiếp theo bị lỗi trong trình mô phỏng và trên các thiết bị. Đã không thay đổi bất cứ điều gì để làm với CoreData trong nhiều thời kỳ nhưng nó sẽ thất bại với Cannot create an NSPersistentStoreCoordinator with a nil model. Đã thử một vài điều ở trên và không có kết quả.

Tôi có thể thấy thư mục momd được tạo với tệp mẹ bên trong. Ứng dụng trong trình mô phỏng có thể thấy cả hai nhưng không thể tạo tệp sqlite.

Điều đã giải quyết nó là thêm một thuộc tính vào một thực thể trong tệp xcdatamodeld của tôi trong Xcode và sau đó xóa nó ngay lập tức. Tôi đã hy vọng điều này sẽ giúp Xcode tạo lại bất cứ thứ gì gây ra sự cố từ đầu và nó dường như hoạt động. Vẫn chưa rõ thực hư chuyện gì nhưng ứng dụng của tôi hiện đang chạy lại trong trình mô phỏng và các thiết bị.


0

Tôi vừa gặp sự cố tương tự khi nâng cấp từ IOS5 lên IOS6. Hóa ra đó là một vấn đề phân biệt chữ hoa chữ thường với tên model.

Không chắc chắn nếu điều này giúp bất cứ ai.



0

Được rồi, trước tiên tôi sẽ nói một nửa giải pháp, nó sẽ hoạt động nếu bạn cài đặt lại ứng dụng (trong thiết bị trình mô phỏng hoặc trình gỡ lỗi). Nhưng đó không phải là một giải pháp thực sự chắc chắn. Ví dụ: nếu bạn đang cập nhật ứng dụng của mình, KHÔNG làm điều đó hoặc phiên bản mới của bạn có thể bị lỗi vì người dùng sẽ không cài đặt lại ứng dụng đó, họ sẽ sử dụng nút cập nhật để thay thế.

Như tôi đã hiểu, vấn đề này chủ yếu xảy ra khi bạn thay đổi tên tệp mô hình dữ liệu. Lý do có thể là như thế này:
. Khi bạn chạy ứng dụng lần đầu tiên, ứng dụng đang tạo tệp mô hình dữ liệu trong gói ứng dụng như "data_model_1". Sự sáng tạo này chỉ xảy ra lần đầu tiên.
. Khi bạn cập nhật tên tệp và chạy lại ứng dụng, nó sẽ không thể tìm thấy vì vẫn còn tệp "data_model_1" nhưng bạn đang yêu cầu nó tìm kiếm "data_model_2". Làm thế nào nó có thể tìm thấy, nó chưa tạo ra nó và sẽ không trừ khi bạn không cài đặt ứng dụng với tên tệp mới.

Vì vậy, nếu đây là phiên bản đầu tiên của ứng dụng và việc cài đặt lại trên trình mô phỏng hoặc thiết bị không gây hại cho dự án của bạn, hãy tiếp tục. Ngoài ra, hãy kiểm tra Hướng dẫn tạo phiên bản mô hình dữ liệu cốt lõi và di chuyển dữ liệu trên Thư viện nhà phát triển iOS, có thể đó là thứ bạn cần.

Chỉnh sửa: Nếu cài đặt lại không hoạt động, hãy thử gỡ cài đặt trước, sau đó dọn dẹp dự án, sau đó đóng mọi thứ, mở lại dự án và xây dựng + chạy. Cần làm việc.


0

Nếu dự án của bạn hoạt động trên trình mô phỏng nhưng không hoạt động trên thiết bị, hãy thử chạy bản dựng phát hành trên thiết bị của bạn thay vì bản dựng gỡ lỗi.

Chọn dự án của bạn -> Sản phẩm -> Chỉnh sửa lược đồ -> Xây dựng cấu hình [GỠ LỖI -> RELEASE]

Bây giờ chạy lại dự án, nó sẽ hoạt động.


0

Tôi cũng đang đối mặt với vấn đề này nhưng khi tôi thay đổi ModelName.xcdatamodeldtệp, nó đang hoạt động. vì vậy tôi nghĩ rằng ModelName.xcdatamodeld tệp không được thêm vào đúng cách, vì vậy hãy kiểm tra và làm sạch ứng dụng rồi chạy nó.


0

Sau khi tôi khắc phục sự cố đặt tên, lỗi vẫn còn. Sau đó, nó hoạt động sau khi khởi động lại Xcode 5. Điều này có thể tự động làm điều tương tự như một số đề xuất liên kết thủ công được cung cấp ở đây.


0

Đối với tôi, vấn đề là do thực tế là tôi đã dán mô hình của mình từ một dự án hộp cát sang dự án thực tế của tôi. Luôn đảm bảo tạo mô hình của bạn từ bên trong dự án mà mô hình đó đang được sử dụng.


0

Tôi phải đối mặt với lỗi này tương tự khi tôi đổi tên các .xcdatamodeltập tin từ xcode và thay đổi tên đổi tên trong ứng dụng của đại biểu bất cứ nơi nào nó là cần thiết, nhưng tôi vẫn có những lỗi tương tự. Không có thủ tục được đề xuất nào phù hợp với tôi.

Sau đó, tôi mở thư mục trong Findervà tìm thấy một tệp bổ sung .xccurrentversioncùng với .xcdatamodeltệp. Tôi đã mở nó trong TextEditứng dụng và thay đổi điều này:

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

Tôi đang sử dụng cái này với Xcode 6.4, OSX Yosemite 10.10.1

Tôi hy vọng nó sẽ giúp!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.