3

我有一个名为 catObras 的实体类,它继承自 NSManagedObject 类。我想要做的是以 JSON 形式通过 Web 服务 (POST) 传递它。如果我发送对象,我会收到:

<catObras: 0x6d879f0> (entity: catObras; id: 0x6d859b0 <x-coredata://41B60B06-248C-488D-A14C-894E04D0395F/catObras/p2> ; data: {
Reporte = "<relationship fault: 0x6d9dc40 'Reporte'>";
calendarioVisitas = "<relationship fault: 0x6dac2c0 'calendarioVisitas'>";
catFondosInversion = "<relationship fault: 0x6d7a1b0 'catFondosInversion'>";
contratista = nil;
contrato = "XX-AYTO-ENS-BC-HABITAT-2011-IS-01";
descripcion = "AMPLIACION DE RED DE DRENAJE SANITARIO COL. VISTA HERMOSA";
direccion = nil;
estatus = nil;
fechaAprobacion = "2012-01-01 08:00:00 +0000";
fechaInicio = "2012-01-31 08:00:00 +0000";
fechaTerminacion = "2012-03-10 08:00:00 +0000";
fechaUltimoRep = nil;
idAgrupacion = 0;
idObra = 5;
inversionAprobada = 0;
inversionAutorizada = 1668000;
inversionContratada = 834000;
nota = asdasdasdasda;
numeroControl = "";
obraPartidas = "<relationship fault: 0x6d7a1f0 'obraPartidas'>";
observaciones = "muestras 2";
oficioAprobacion = "SDS/122/11/1857 OF.001";
supervisor = nil;})

我想以 json 形式传递这些信息。现在我正在使用 SBJSON(又名 JSON 框架)。当我尝试使用 JSONRepresentation 时,它会向我发送以下信息:

JSON 表示失败。错误是:JSON 类型无效

有什么建议么?

4

1 回答 1

7

我不熟悉 SBJSON,但我的猜测是它-JSONRepresentation应该在 NSDictionaries 上调用,而不是在任意对象上调用。你可以这样做:

NSManagedObject *managedObject = ...;
NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", ..., nil]; // These are the keys for the properties of your managed object that you want in the JSON
NSString *json = [[managedObject dictionaryWithValuesForKeys:keys] JSONRepresentation];

-dictionaryWithValuesForKeys:方法在文档中进行了描述。重要的是它返回一个 NSDictionary,SBJSON 可能可以处理它。您需要注意 NSManagedObject 子类中每个属性的类型,确保它们属于 SBJSON 可以处理的类型。

于 2012-02-14T19:31:31.560 回答