gpt4 book ai didi

cocoa - 将核心数据写入 XML 文件

转载 作者:行者123 更新时间:2023-12-03 17:11:34 25 4
gpt4 key购买 nike

我正在尝试将核心数据的数据写入xml文件。

最好的方法是什么?使用可能可以提供数据的数组 Controller ?

或者尝试使用 NSFetchRequest?我尝试了最后一个,但我认为 NSFecthRequest 的输出无法写入 xml 文件。

我使用了这段代码:

NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"LanguageEntity" inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
[request setReturnsObjectsAsFaults:NO];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"1==1"];
[request setPredicate:predicate];

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"language" ascending:YES];

request.sortDescriptors = [NSArray arrayWithObject:descriptor];

NSError *error;
NSArray *array = [moc executeFetchRequest:request error:&error];
NSLog(@"%@", array);
if (array == nil)
{
NSLog(@"error");
}
else
{
NSString *root = @"/Users/Sebastian/Desktop/A6/A6/newPlist.xml";
if (![[NSFileManager defaultManager]fileExistsAtPath:root])//checking fileexist or not
{
//if not exist creating the same
[[NSFileManager defaultManager]createFileAtPath:root contents:nil attributes:nil];
[[moc executeFetchRequest:request error:&error] writeToFile:root atomically:YES];
}
else
{
[[moc executeFetchRequest:request error:&error] writeToFile:root atomically:YES];
}

}

这主要是正确的方法吗?或者我应该使用ArrayController?如果是的话你能告诉我该怎么做吗?

后来我希望能够将核心数据内容保存到 xml 文件并加载其他 xml 或特定的内容。

亲切的问候

最佳答案

如何获取数据确实不是重点。您的问题在于将数据转换为可以导出为 XML 的形式以及如何处理该数据。

通过使用:

[[moc executeFetchRequest:request error:&error] writeToFile:root atomically:YES];

(首先,您正在重新执行已执行的提取)您正在尝试将托管对象数组直接转换为 XML(以 plist 格式)。这不一定有效,因为 plist 有一组非常特定的允许数据类型,而托管对象不是其中之一。

您可以更改获取以返回字典(NSDictionaryResultType),这会让您更接近。但是,您获取的数据中的任何日期仍然会导致它失败。如果您有任何数据类型无法存储到 plist 中,那么您需要在尝试转换数组之前执行到另一种数据类型的转换。

关于cocoa - 将核心数据写入 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24123506/

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