- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我会尝试揭露我的问题,因为它有点复杂。我使用 Core Data,但存储的数据有问题。当我使用这段代码时:
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"ItemMessage"];
NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
NSMutableArray *values = [[NSMutableArray alloc] init];
if (error == nil) {
for (int i = 0; i<results.count; i++) {
NSLog(@"results %@",[results objectAtIndex:i]);
ItemMessage *itemMessage = [results objectAtIndex:i];
[values addObject:itemMessage];
}
等等。问题是 NSLog 打印的值是正确的(“结果”包含一些东西)但是 itemMessage 总是包含 0 个键/值对(它看起来是空的)。为了了解问题所在,我回头看到在 insertNewObjectForEntityForName
中我也遇到了这个问题,这是我在 Core Data 中保存消息数据时使用的代码:
for (id key in objectMessage) {
ItemMessage *itemmessage = [[ItemMessage alloc] init];
itemmessage.itemMessageId = [key objectForKey:@"itemMessageId"];
itemmessage.message = [key objectForKey:@"message"];
itemmessage.sender = [key objectForKey:@"sender"];
itemmessage.users = [key objectForKey:@"users"];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSManagedObject *newMessage;
newMessage = [NSEntityDescription insertNewObjectForEntityForName:@"ItemMessage" inManagedObjectContext:context];
[newMessage setValue: itemmessage.itemMessageId forKey:@"itemMessageId"];
[newMessage setValue: itemmessage.message forKey:@"message"];
[newMessage setValue: itemmessage.sender forKey:@"sender"];
[newMessage setValue: itemmessage.users forKey:@"users"];
[context save:&error];
if (error != nil) {
NSLog(@"Coredata error");
}
问题是 insertNewObjectForEntityForName
和 setValue
之后的 newMessage
也包含 0 个键/值对。你能帮帮我吗?
最佳答案
您似乎没有将新的托管对象正确地插入到上下文中。
应该是:
for (id key in objectMessage) {
NSManagedObjectContext *context = [appDelegate managedObjectContext];
ItemMessage *itemmessage = (ItemMessage*)[NSEntityDescription insertNewObjectForEntityForName:@"ItemMessage"
inManagedObjectContext:context];
itemmessage.itemMessageId = [key objectForKey:@"itemMessageId"];
itemmessage.message = [key objectForKey:@"message"];
itemmessage.sender = [key objectForKey:@"sender"];
itemmessage.users = [key objectForKey:@"users"];
}
//save your inserts
要为您的托管对象创建类文件,您可以:
转到您的模型文件 (xcdatamodeld) ->
选择一个实体 ->
从菜单中选择:
编辑器-> 创建 NSManagedObjectSubclass -> 选择您喜欢的类文件的实体。
现在您将拥有可以轻松访问的托管对象(NSManagedObject 子类)并受益于 CoreData 功能。
关于ios - CoreData insertNewObjectForEntityForName 和 executeFetchRequest 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21727258/
我在使用 Core Data 时遇到了一个奇怪的问题。目标是iOS 5.0 这行代码: NSArray *results = [self executeFetchRequest:request
我正在尝试在 iOS 7 应用程序中实现 Core Data(并且之前已成功完成)。但是,当我执行executeFetchRequest 方法时,应用程序崩溃了。下面添加了最相关的代码: #impor
我的 Objective-C 代码中有一个奇怪的问题。我有一个 View Controller ,我在“viewWillAppear”中调用自己的 loadData 方法。这很酷,直到 View 第三
必须在创建该线程的同一线程中使用AFAIK ManagedObjectContext,否则可能由于锁定而冻结。 我遇到的情况是尝试在主线程中创建executeFetchRequest:error:时被
我的提取请求工作正常,我可以毫无问题地获取我提取的对象。我想做的是在实体不存在的情况下处理错误。问题是,我无法处理错误,因为当我调用 executeFetechRequest: error: 时应用程
我的 View Controller 中有一个“书籍”方法,它获取核心数据中的所有书籍并返回它们的数组。我经常依赖 self.books - 当我需要知道它在某个索引处是哪本书、有多少本书等时,boo
我是一名 iOS 开发新手。我正在尝试将 executeFetchRequest 的结果导入到我创建的结构中,以便稍后查看到表中。我在 func getTasks() 中得到“数组索引超出范围”,我很
我正在使用 AppDelegate 的默认 managedObjectContext,当我在其上执行 executeFetchRequest 时,它永远不会转到下一行或因错误而崩溃。这是在后台线程上进
我在 Core Data 中遇到了一个奇怪的问题。基本上,我有一个空的核心数据,其中包含学生和教师等多个模型。我尝试执行以下代码: NSFetchRequest *request = [NSFetch
我正在做一个 Core Data 教程,但我总是遇到崩溃。这是一个 objc_exception_throw。 我创建了一个名为 loadTableData 的方法并在 viewDidLoad 中调用
我最近在使用我的 iOS 应用程序时遇到了一个奇怪的问题,并且不知道如何解决它。 在第一次运行期间,有一个在后台运行的方法,它从游戏中下载项目列表和项目属性,并将其存储在 Core Data 中以供以
我正在使用 Core Data 存储一个包含可转换 NSDictionary 属性的实体。存储后,我可以在 .SQLite 文件中看到一个对象,所以我认为(?)我在那里很好。但是,当我尝试检索整个实体
我不知道发生了什么,但它突然在 Visibility.m 实体类的下一行崩溃。我没有对这些类(class)进行任何更改,并且它曾经完美地工作。唯一的问题是我错误地删除了模型。我已经从备份中恢复它并再次
我开发了一个针对iPhone的应用程序,它使用CoreData。在模拟器上运行时,一切正常,但是在设备上运行时,出现以下错误: "*** Terminating app due to uncaught
我正在尝试将外部数据添加到 SQLite 中/使用 Core Data 更新现有数据。 基本上,我从外部 Web 服务获得了一个 JSON,我正在使用以下代码来确定我是应该在数据库中添加新对象还是更新
我在使用核心数据时遇到奇怪的数据丢失问题。 我使用以下代码将记录保存到核心数据。 for (int i = 0; i < [domains count]; i++){ NSSt
附件是我的代码。 给我问题的那一行是 let fetchRequest = try moc.executeFetchRequest(fetchRequest) as! [AppSettings] 似乎
在我的 ViewController 中打招呼: [super viewDidLoad]; context = [[AppDelegate sharedAppDelegate] managedObje
这个问题在这里已经有了答案: Swift 2 ( executeFetchRequest ) : error handling (5 个答案) 关闭 7 年前。 https://www.dropbo
我有一个 saveMOC,它是 mainMOC 的直接父级,我需要在线获取另一个 tmpMOC 以免阻塞我的 UI,同时从互联网上获取大量记录。 我的应用卡住了。我可以将其缩小到这一点:
我是一名优秀的程序员,十分优秀!