2

コアデータを JSON に出力できるようにするクラスを作成しようとしています。

私はそれをある程度まで機能させることができましたが、出力関係でレンガの壁にぶつかったようです

NSMutableArray * objectsArray = [[NSMutableArray alloc] init];

for (NSManagedObject * object in array) {
    if([NSJSONSerialization isValidJSONObject:object]) {
        [objectsArray addObject:object];
    } else {

    NSMutableDictionary *fields = [NSMutableDictionary dictionary];
    for (NSAttributeDescription *attribute in [[object entity] properties]) {
        NSString *attributeName = attribute.name;
        id attributeValue = [object valueForKey:attributeName];

        if([results length] > 0)
        {
            NSArray *chunks2 = [results componentsSeparatedByString: @","];
            for (NSString * string in chunks2) {
                if([string.lowercaseString isEqualToString:attributeName.lowercaseString])
                {
                    [fields setObject:[NSString stringWithFormat:@"%@",attributeValue] forKey:attributeName];
                    break;
                }
            }
        }
        else
        {
            if (attributeValue) {
                [fields setObject:[NSString stringWithFormat:@"%@",attributeValue] forKey:attributeName];
            }
        }
    }
    [objectsArray addObject:fields];
    }
}

NSError *error;
NSData * JSONData = [NSJSONSerialization dataWithJSONObject:objectsArray options:kNilOptions error:&error];

そして、これは、たとえば1つ->多数または多数-> 1つの関係がない限り、データを正常に出力します

以下を出力します

{
"mySegmentation": "(null)",
"number": "9452062"
},
{
"mySegmentation": "<NSManagedObject: 0x212050b0> (entity: SegmentationCodes; id: 0x212090b0 <x-coredata://BEC52F5F-EA26-4CFF-BCCB-09DA163F465D/SegmentationCodes/p13> ; data: <fault>)",
"number": "9448502"
},

リレーションシップからの情報をインデントして出力するにはどうすればよいですか?

私はこれについてしばらく頭を悩ませてきました。助けていただければ幸いです

ありがとうマット

4

1 に答える 1