首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Core数据库中获取数据

如何从Core数据库中获取数据
EN

Stack Overflow用户
提问于 2013-05-28 17:51:06
回答 1查看 338关注 0票数 0

这是我用于插入数据的代码

代码语言:javascript
运行
复制
        NSError *error;
    AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
    NSManagedObjectContext *context = [appDelegate managedObjectContext];
    newtext = [NSEntityDescription insertNewObjectForEntityForName:@"TableTextView" inManagedObjectContext:context];
    //NSData *bytes = [txtView.text dataUsingEncoding:NSUTF8StringEncoding];
     NSMutableArray *arr = [[NSMutableArray alloc] init];
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    [dict setObject:txtView.text forKey:@"FileString"];
    [arr addObject:dict];
    NSData *bytes1 = [NSKeyedArchiver archivedDataWithRootObject:arr];
    [newtext setValue:bytes1 forKey:@"textView"];
    [context save:&error];

现在,我想获取我发送到核心数据库的数据,所以我使用以下代码来完成此操作

代码语言:javascript
运行
复制
    NSError *errorr;
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
    NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext ];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"TableTextView" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
    NSArray *fetchedObjects;
    fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&errorr];
    for (int i =0; i <[fetchedObjects count]; i++){
        newtext = [fetchedObjects objectAtIndex:i];
        strvalue = [NSString stringWithFormat:@"%@",[newtext valueForKey:@"textView"]];
        NSLog(@"====%@",strvalue);
        NSData *data=[strvalue dataUsingEncoding:NSUTF8StringEncoding];
        NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
        NSLog(@"=====%@",unarchiver);

现在的问题是,当调试器出现在NSKeyedUnarchiver.and上时,这段代码抛出异常,异常是

代码语言:javascript
运行
复制
2013-05-28 15:13:33.030 DocumentTouch[2376:c07] -[__NSCFData objectForKey:]: unrecognized selector sent to instance 0x8620ad0
2013-05-28 15:13:33.031 DocumentTouch[2376:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData objectForKey:]: unrecognized selector sent to instance 0x8620ad0'
*** First throw call stack:
(0x1787012 0x15ace7e 0x18124bd 0x1776bbc 0x177694e 0x16fbe18 0xfdc9b8 0x3e62 0x15c0705 0x4f7920 0x4f78b8 0x5b8671 0x5b8bcf 0x5b7d38 0x52733f 0x527552 0x5053aa 0x4f6cf8 0x2502df9 0x2502ad0 0x16fcbf5 0x16fc962 0x172dbb6 0x172cf44 0x172ce1b 0x25017e3 0x2501668 0x4f465c 0x26dd 0x2605 0x1)
libc++abi.dylib: terminate called throwing an exception

有没有人能帮帮我......

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-29 02:52:52

您添加了一个不必要的转换,这会破坏该过程。您保存NSData对象,但将其作为NSString读取,然后将其转换为NSData。这很糟糕--因为在运行UTF8转换之后,您得到的NSData不是用NSKeyedArchiver存档的,因此不能用NSKeyedUnarchiver解压。

您保存了一个NSData,因此只需将其作为一个文件重新阅读即可。那里的NSString比无用还要糟糕。此外,您应该使用-[NSKeyedUnarchiver unarchiveObjectWithData:],以匹配您的编码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16788982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档