J'utilise setObject: forKey: pour ajouter un objet de type Rresource à un NSMutableDictionary nommé: resourceLib.Entrée NSMutableDictionary corrompue après s'être écartée de la méthode où l'entrée a été ajoutée
Ensuite, je regarde immédiatement ce qui est réellement dans le dictionnaire et c'est OK.
Lorsque je tente de regarder à nouveau dans la méthode d'un autre objet, la clé appropriée est présente, mais une référence à une propriété de chaîne « url » cas d'une liste de messages d'erreur comprenant:
28/09/2016 11 : 32: 42.636 testa [760: 16697] - [__ url NSCFString]: sélecteur non reconnu envoyé à l'instance 0x600000456350
objet Rresource est défini comme:
@interface Rresource : NSObject
@property (nonatomic,strong) NSString* url;
@property (nonatomic,strong)NSMutableArray* resourceNotesArray;
@property(nonatomic,strong)NSString* name;
@property(nonatomic,strong)NSString* resourceUniqueID;
@property(nonatomic)BOOL isResourceDirty;
Cette méthode dans un ViewController ajoute le Rresource au NSMutableDictionary
-(void)saveResource
{
Rresource* resource = self.currentResource;
Rresource* temp;
if (resource)
{
if (resource.isResourceDirty)
{
[self.model.resourceLib setObject:resource forKey:resource.resourceUniqueID];
temp = [self.model.resourceLib objectForKey:resource.resourceUniqueID];
}
}
}
ressources et la température contiennent les informations identiques montrant l'info a été ajouté correctement.
Dans la méthode du modèle, le message d'erreur décrit ci-dessus est à l'origine de ce qui suit.
for (Rresource* resource in self.resourceLib)
{
NSString* string = resource.url;
}
où le modèle contient:
@property(nonatomic,strong)NSMutableDictionary* resourceLib;
et:
@implementation Model
- (instancetype)init
{
self = [super init];
if (self)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
self.path = [[paths objectAtIndex:0] stringByAppendingString:@"/Application Support/E2"];
BOOL exists = [[NSFileManager defaultManager] createDirectoryAtPath:self.path withIntermediateDirectories:NO attributes:nil error:nil];
if (!exists)
{
[[NSFileManager defaultManager] createDirectoryAtPath:self.path withIntermediateDirectories:NO attributes:nil error:nil];
}
self.resourceLibPath = [NSString pathWithComponents:@[self.path,@"resources"]];
self.resourceLib = [[NSMutableDictionary alloc]init];
self.noteLibPath = [NSString pathWithComponents:@[self.path, @"notes"]];
self.noteLib = [[NSMutableDictionary alloc]init];
}
return self;
J'ai trouvé cette question difficile de poser clairement, même après avoir passé plusieurs heures formuler. Je m'excuse. J'ai essayé à peu près tout depuis environ une semaine. Je suis perplexe.
Des idées?
Merci
C'était-ce! Merci beaucoup! –