Inizio a imparare rapidamente da un po 'di tempo e desidero utilizzare alcune classi di modelli di dati scritti nell'obiettivo C. Ho un bug strano quando provo a salvare i dati dalle caselle di input:Problema con dati core di classe NSManagedObject personalizzati in swift
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
Ecco modello di dati screenshot:
Ecco la funzione di salvataggio:
@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)
}
Codice da 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)
Hai aggiornato il modello di coredata dopo aver installato la tua app sul dispositivo? Se sì (e senza regole di fusione) elimina l'app e resinstall per assicurarti che non ci siano conflitti relativi ai modelli aggiornati – Alexander