Ich versuche, einige JSON für meine App zu analysieren. Beim Versuch, den "Name" -Wert zu setzen, erhalte ich den Fehler unrecognized selector sent to instance'
.
Dies ist der Code-Zeile ist der Fehler passiert: self.name = [json_object objectForKey:@"name"];
(json_object ist ein NSDictionary und "Selbst" ist ein Objekt in Coredata)CoreData, JSON "nicht erkannt Selektor an Instanz gesendet"
Meine JSON wie folgt aussieht:
json_object: {
draftstatus = "isdraftfull.php";
getcard = "getcard.php";
getpack = "getpack.php";
imageextension = ".jpg";
images = "images/small/";
joindraft = "joindraft.php";
joindraftmenu = "getjoindraftmenu.php";
login = "loginasuser.php";
name = "the server";
passpack = "passpack.php";
playerdraftstatus = "getplayerdraftstatus.php";
signup = "signup.php";
userexists = "checkifuserexists.php";
usesetidforimagepath = false;
}
Server.h Aussehen wie folgt:
#import <CoreData/CoreData.h>
#import "JSON.h"
@interface Server : NSManagedObject
{
NSMutableData *responseData;
}
@property (nonatomic, retain) NSString * playerdraftstatus;
@property (nonatomic, retain) NSString * signup;
@property (nonatomic, retain) NSNumber * usesetidforimagepath;
@property (nonatomic, retain) NSString * login;
@property (nonatomic, retain) NSString * imageextension;
@property (nonatomic, retain) NSString * userexists;
@property (nonatomic, retain) NSString * getcard;
@property (nonatomic, retain) NSString * passpack;
@property (nonatomic, retain) NSString * draftstatus;
@property (nonatomic, retain) NSString * joindraftmenu;
@property (nonatomic, retain) NSString * getpack;
@property (nonatomic, retain) NSString * joindraft;
@property (nonatomic, retain) NSString * images;
@property (nonatomic, retain) NSNumber * isdefaultserver;
@property (nonatomic, retain) NSString * root;
@property (nonatomic, retain) NSString * name;
- (id) initWithWebAddress:(NSString *) address;
- (id) initWithWebAddressAsyn:(NSString *) address;
- (void) fillFromJSON:(NSDictionary *) json_object;
- (void) saveServer;
@end
Ich glaube, dass es vor ein paar Tagen funktionierte, aber ich erinnere mich nicht. Als ich heute damit anfing, habe ich das Objekt "root" hinzugefügt. Es kompiliert ohne Fehler, analysiert aber nicht dieses json.
Hilfe?
EDIT
änderte ich die JSON mit name = "the server"
wieder zu kommen und wenn ich mich anmelde, dass wie diese NSLog(@"json_object name: %@", [json_object objectForKey:@"name"]);
das Protokoll sagt json_object name: the server
aber ich immer noch die gleichen Fehler, wenn ich versuche, das zu self.name
einzustellen, die vom Typ String ist .
Ich habe festgestellt, dass manchmal bei der Überprüfung der Log-Version von JSON, dass der Wert innerhalb des Namens nicht immer in Anführungszeichen umgeben ist und wie Sie aus dem Protokoll von [json_object objectForKey:@"name"]
es zeigt ohne Anführungszeichen um es. Ist das das Problem und warum passiert das? Wenn ich den json gerade auf der Web-Seite betrachte, die ihn ausgibt, gibt es IMMER Zitate um den Wert.
EDIT 2
Der vollständige Fehler wird wie folgt dar:
-[Server setName:]: unrecognized selector sent to instance 0x61036e0
2010-11-19 15:46:10.113 TCGDraft[57953:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Server setName:]: unrecognized selector sent to instance 0x61036e0'
*** Call stack at first throw:
EDIT 3
habe ich ein NSLog auf "Selbst" und das ist, was self: <Server: 0x6143190> (entity (null); id: (null) ; data: {})
kommt zurück
Ich habe keine Ahnung, ob das aber normal ist. Dies ist ein CoreData-Objekt und ich habe das Gefühl, dass ich es irgendwie vermasselt habe.
EDIT 4
Ich ging zurück und auf dem Code sah wie folgt aus einem Server-Objekt von Coredata zu erstellen:
Server *server = [NSEntityDescription
insertNewObjectForEntityForName:@"Server"
inManagedObjectContext:context];
Als ich lief, dass ich jetzt eine Fehlermeldung erhalten, die besagt, nur EXC_BAD_ACCESS
es so Sieht irgendwie aus, als ob dieses Objekt durcheinander ist ... aber ich weiß nicht wie.
EDIT 5
rechts, so ganz habe ich die Server.h und Server.m Dateien mit meinem eigenen Code gelöscht, ich neu erstellt sie aus dem Coredata-Objekt und versuchte, diesen Code, den ich in „Edit 4“ geschrieben und ich STILL bekomme den gleichen Fehler über EXC_BAD_ACCESS .... also bin ich jetzt anscheinend BACKWARD anstatt Forward gegangen.
[json_object objectForKey: @ "name"]; Es gibt Nullwerte zurück. Prüfen Sie. – jfalexvijay
Wie kann es einen Nullwert zurückgeben, wenn es dort heißt, dass "Name" unter "json_object" ist "Default Server"? –
Sind Sie sicher, dass json_object ein NSDictionary ist ?! Führen Sie einen NSLog aus (@ "class:% @", [json_object class]); und sehen, was es zurückgibt. –