J'ai un ancien projet écrit sur Objective-C. Besoin de faire la migration vers le Royaume.RLMResults: crash allObjects (iOS Objective-C)
J'ai créé plusieurs objets/classes héritage de RLMObject
. Lorsque je ne récupère des objets qu'avec un type d'objet principal (ConnectionRealm
) - fonctionne bien, mais si j'ajoute (seulement ajouter, ne pas inclure, ne pas utiliser) pour projeter deux ou plusieurs autres classes (héritage de RLMObject
), comme FloorRealm
, APP crash sur [ConnectionRealm allObjects]
sans aucune erreur.
Egalement ConnectionRealm
contient RLMArray
de FloorRealm
. App plante toujours. (Ne peut pas résoudre et comprendre ces quelques jours.) Merci.
Modèle de connexion:
#import <Foundation/Foundation.h>
#import <Realm/Realm.h>
#import "FloorRealm.h"
@interface ConnectionRealm : RLMObject
@property int connectionID;
@property NSString *name;
@property NSString *localIPAddress;
@property NSString *localPort;
@property NSString *remoteIPAddress;
@property NSString *remotePort;
@property NSString *userName;
@property NSString *password;
@property NSString *deviceID;
@property RLMArray <FloorRealm *> *floors;
- (instancetype)initWith:(NSString *)name
localIP:(NSString *)localIPAddress
localPort:(NSString *)lPort
remoteIP:(NSString *)remoteIPAddress
remotePort:(NSString *)rPort
userName:(NSString *)userName
password:(NSString *)password
deviceID:(NSString *)deviceID;
@end
#import "ConnectionRealm.h"
@implementation ConnectionRealm
- (instancetype)initWith:(NSString *)name
localIP:(NSString *)localIPAddress
localPort:(NSString *)lPort
remoteIP:(NSString *)remoteIPAddress
remotePort:(NSString *)rPort
userName:(NSString *)userName
password:(NSString *)password
deviceID:(NSString *)deviceID {
if (self = [super init]) {
self.connectionID = [self incrementID];
self.name = name;
self.localIPAddress = localIPAddress;
self.localPort = lPort;
self.remoteIPAddress = remoteIPAddress;
self.remotePort = rPort;
self.userName = userName;
self.password = password;
self.deviceID = deviceID;
}
return self;
}
+ (NSString *)primaryKey { return @"connectionID"; }
- (int)incrementID {
RLMResults *objects = [ConnectionRealm allObjects];
return self.connectionID = [[objects maxOfProperty:@"connectionID"] intValue] + 1;
}
@end
FloorModel:
#import <Realm/Realm.h>
@interface FloorRealm : RLMObject
@property int floorID;
@property NSInteger floorNumber;
@property NSString *floorName;
- (instancetype)initWith:(NSInteger)floorNumber floorName:(NSString *)name;
@end
RLM_ARRAY_TYPE(FloorRealm)
#import "FloorRealm.h"
@implementation FloorRealm
- (instancetype)initWith:(NSInteger)floorNumber floorName:(NSString *)name {
if (self = [super init]) {
self.floorID = [self incrementID];
self.floorNumber = floorNumber;
self.floorName = name;
}
return self;
}
+ (NSString *)primaryKey { return @"floorID"; }
- (int)incrementID {
RLMResults *objects = [FloorRealm allObjects];
return self.floorID = [[objects maxOfProperty:@"floorID"] intValue] + 1;
}
@end