Я пытаюсь проанализировать JSON для моего приложения.
При попытке установить значение «имя» я получаю ошибку unrecognized selector sent to instance'
.
Это строка кода, в которой происходит ошибка: self.name = [json_object objectForKey:@"name"];
(json_object - это NSDictionary, а "self" - это объект в CoreData)
Мой JSON выглядит так:
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 выглядит так:
#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
Я считаю, что это работало несколько дней назад, но я не помню. Когда я начал работать над этим сегодня, я добавил «корневой» объект. Он компилируется без ошибок, но не анализирует этот json.
Помощь
EDIT
Я изменил JSON, чтобы вернуться с name = "the server"
, и когда я регистрирую это, как это NSLog(@"json_object name: %@", [json_object objectForKey:@"name"]);
, журнал говорит json_object name: the server
, но я все еще получаю ту же ошибку, когда пытаюсь установить для этого self.name
, который имеет тип String.
Я заметил, что иногда при проверке версии JSON для Log-файла значение внутри имени не всегда заключено в кавычки, и, как видно из журнала [json_object objectForKey:@"name"]
, оно отображается без кавычек. Это проблема и почему это происходит? Если я посмотрю на json прямо на веб-странице, которая его выводит, ВСЕГДА есть кавычки вокруг значения.
РЕДАКТИРОВАТЬ 2
Полная ошибка выглядит следующим образом:
-[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:
РЕДАКТИРОВАТЬ 3
Я сделал NSLog на "себя", и это то, что возвращается self: <Server: 0x6143190> (entity (null); id: (null) ; data: {})
Я понятия не имею, если это то, что нормально, хотя. Это объект CoreData, и у меня есть ощущение, что я мог как-то испортить его.
РЕДАКТИРОВАТЬ 4
Я вернулся и посмотрел на код для создания объекта сервера из CoreData следующим образом:
Server *server = [NSEntityDescription
insertNewObjectForEntityForName:@"Server"
inManagedObjectContext:context];
Когда я запустил это, я теперь получаю ошибку, которая просто говорит EXC_BAD_ACCESS
, так что похоже, что какой-то объект испортился ... но я не знаю как.
РЕДАКТИРОВАТЬ 5
Правильно, поэтому я полностью удалил файлы Server.h и Server.m со своим пользовательским кодом, я воссоздал их из объекта CoreData и попробовал тот код, который я разместил в «Редактировать 4», и я ВСЕ ЕЩЕ получаю ту же ошибку о EXC_BAD_ACCESS ... так что теперь я, очевидно, ушел НАЗАД, а не вперед.