gpt4 book ai didi

ios - NSJSONSerialization - 与 JSON 的核心数据关系

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:12 27 4
gpt4 key购买 nike

我一直在尝试创建一个类以允许我将核心数据输出到 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];

只要我没有关系,例如一个->许多或许多->一个,这就可以很好地输出数据

输出如下

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

如何让它也缩进和输出关系中的信息?

我一直在摸不着头脑,希望能得到帮助

谢谢马特

最佳答案

来自文档:

可以转换为 JSON 的对象必须具有以下属性:

  • 顶级对象是 NSArray 或 NSDictionary。
  • 所有对象都是NSString、NSNumber、NSArray的实例,NSDictionary 或 NSNull。
  • 所有字典键都是 NSString 的实例。
  • 数字不是 NaN 或无穷大。

所以,你要做的就是用字典、数组、字符串、数字、空值组成一个字典或数组。

通常 CoreData 中的关系没有排序,所以 NSSets,你必须从集合中生成一个 NSArray(因此存在一个来自 Apple 的好方法)并将它作为特定键的值放入字典中。

然后运行 ​​- dataWithJSONObject:options:error:(如您之前所做的那样)并检索正确的 JSON。

不确定缩进是否正确。你必须检查一下。

希望如此

关于ios - NSJSONSerialization - 与 JSON 的核心数据关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17492514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com