executeFetchRequest包含"<null>"和我的数据

use*_*170 0 core-data objective-c nsfetchrequest ios

你的ViewController中的Hello:

[super viewDidLoad];

context = [[AppDelegate sharedAppDelegate] managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Items" inManagedObjectContext:context]];
NSArray *results = [context executeFetchRequest:request error:&error];
if(error){
    NSLog(@"++++++++");
    return;
}

NSLog(@"ARRRAY====%@",[results valueForKey:@"items"]  );
Run Code Online (Sandbox Code Playgroud)

数据是:

("null>", MyGoodData)
Run Code Online (Sandbox Code Playgroud)

如果我在AppDelegate中调用此代码,那么确定:

数据是:

(MyGoodData)
Run Code Online (Sandbox Code Playgroud)

Mar*_*rra 10

首先,您的错误检查是错误的.你应该检查

if (results == nil) {
  //Error condition
}
Run Code Online (Sandbox Code Playgroud)

没检查结果error. error即使在非错误情况下也可以填充.

其次,值results是a NSArray表示密钥没有值items.您可以直接打印出数组的结果:

NSLog(@"ARRAY ==== %@", results);
Run Code Online (Sandbox Code Playgroud)

欢迎来到stackoverflow.

  • 如果您仍需要源,请参阅iOS Developer Library:错误处理编程指南.标有"重要"的第一个框:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError.html#//apple_ref/doc/uid/TP40001806-CH204-BAJIIGCC (3认同)
  • 在我撰写关于核心数据的书籍和我与编写核心数据的团队的对话以及与维护Cocoa框架的团队的众多成员的对话时,我的经验是我自己的经验.除非从方法调用中获得失败条件,否则忽略`error`指针的结果.这就是Cocoa和Core Data中的规则遵循该规则.`error`指针**用作便笺簿,不会重置为'nil`,因此即使在成功的情况下也可以填充**CAN**. (2认同)