2014-06-23 11 views
5

Zacząłem uczyć się niedawno i chcę używać pewnej klasy modelu danych napisanej w Objective C. Dostałem dziwny błąd, gdy próbuję zapisać dane z pól wejściowych:Problem z niestandardowymi danymi rdzenia klasy NSManagedObject w szybkim tempie

Users.h

#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 


@interface Users : NSManagedObject 

@property (nonatomic, retain) NSString * password; 
@property (nonatomic, retain) NSString * username; 

- (NSString *)toString; 
- (void)addFunny:(NSString *)prefix; 

@end 

Users.m

#import "Users.h" 


@implementation Users 

@dynamic password; 
@dynamic username; 

- (NSString *)toString 
{ 
    return @"The username is \(username) and password is \(password)"; 
} 

- (void)addFunny:(NSString *)prefix 
{ 
    self.username = [NSString stringWithFormat:@"%@%@", prefix, self.username]; 
} 

@end 

Oto model danych screenshot:

data model Oto funkcja zapisać:

@IBAction func btnSave_Clicked(){ 
     println("Save \(txtUsername.text)") 

     let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
     let context: NSManagedObjectContext = appDel.managedObjectContext 
     let ent = NSEntityDescription.entityForName("Users", inManagedObjectContext: context) 

     var newUser = Users(entity: ent, insertIntoManagedObjectContext: context) 
     newUser.username = txtUsername.text 
     newUser.password = txtPassword.text 

     context.save(nil) 
     println(newUser) 

    } 

Kod z lldb:

Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)" UserInfo=0xb736c50 {metadata={ 
    NSPersistenceFrameworkVersion = 508; 
    NSStoreModelVersionHashes =  { 
     Entity = <b2bc8535 3bcfcdf1 81eecadc d32d8511 cc030525 d4eb7d76 94d11d7c f5853918>; 
    }; 
    NSStoreModelVersionHashesVersion = 3; 
    NSStoreModelVersionIdentifiers =  (
     "" 
    ); 
    NSStoreType = SQLite; 
    NSStoreUUID = "0169C569-2A57-47F1-9EF6-684485CB1135"; 
    "_NSAutoVacuumLevel" = 2; 
}, reason=The model used to open the store is incompatible with the one used to create the store}, (error.userInfo) 
+0

Czy zaktualizowałeś swój model coredata po pierwszej instalacji aplikacji na urządzeniu? Jeśli tak (i ​​bez reguł łączenia), usuń aplikację i zainstaluj ją ponownie, aby upewnić się, że nie ma konfliktów dotyczących zaktualizowanych modeli. – Alexander

Odpowiedz

13

To nie ma nic wspólnego ze SWIFT. Jeśli aktualizacja Twój CoreData modelu bez zasady definiowania połączenia/wersjonowania jak wspomniano w Applee Doc, trzeba usuwać i ponowna swoją aplikację na urządzeniu lub symulatora.

Spójrz na komunikat o błędzie:

The model used to open the store is incompatible with the one used to create the store} 

usunąć aplikację z symulatora/lub urządzenie i wykonać czysty nad projektem. To powinno rozwiać te problemy. Upewnij się, że nie używasz debuggera podczas usuwania aplikacji, ponieważ w przeciwnym razie nie zostanie on właściwie usunięty.

Jeśli chcesz być pewny jego zniknęła (symulator), sprawdź ten katalog

Users/INSERT_YOUR_USER_HERE/Library/Application Support/iPhone Simulator/ for your app's folder, under the version you're running. 

nie można oczekiwać, że zmiana już zainstalowanego modelu będzie pracować na urządzeniu bez dalszego wysiłku.

+0

Dzięki, pomogło to, gdy przełączę się na inny symulator! – aladine

Powiązane problemy