ios - NSManagedObjects 的动态属性在获取后为空

标签 ios core-data null nsmanagedobject nsfetchrequest

我的 iOS 应用程序中的核心数据有问题。

首先,我的 ManagedObject 的代码:

@interface MyBook : NSManagedObject
  @property (retain, nonatomic) NSString *book_name;
@end


@implementation MyBook    
  @synthesize book_name;
@end

和代码示例:

NSFetchRequest *fr = [NSFetchRequest fetchRequestWithEntityName:@"MyBook"];
fr.predicate = [NSPredicate predicateWithFormat:@"book_name == %@", @"Something"];

NSArray *result = [s.managedObjectContext executeFetchRequest:fr error:&error];

MyBook *book = nil;
if (result.count) {
    book = [result objectAtIndex:0];
    NSLog(@"Updating old book: %@", book);
} else {
    book = [NSEntityDescription insertNewObjectForEntityForName:@"Book"
               inManagedObjectContext:s.managedObjectContext];
    NSLog(@"Creating new book");
    shelf.book_name = // some unique book name is set here
}

NSLog(@"result: %@", book.book_name);

代码基本上...

  • 尝试按名称查找一本书并捕获它。
  • 如果这本书还不存在,创建一个并设置书名。
    • 否则,拿现有的书。

我遇到的奇怪事情是,当这本书已经存在时,属性 book_name 为空。如果创建了对象,book_name 将具有我之前设置的字符串。

我想访问该属性不会导致获取的图书实例出现错误。这可能就是为什么 [book valueForKey:@"book_name"] 起作用并且之后属性也被填充的原因。

我在这里错过了什么?我希望 Core Data 注意到我正在访问该属性并在内部透明地为我抓取数据。

谢谢

最佳答案

大呼!

在发布这个原始问题后,我意识到我使用的是 @synthesize 而不是 @dynamic

但是,如果将来有人遇到这种影响,我会把这个问题留在这里。 :)

关于ios - NSManagedObjects 的动态属性在获取后为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446879/

相关文章:

ios - 使用 NSPredicate Core Data 中的数据库字段执行计算

c# - 空对象引用

java - 如果 equals(null) 抛出 NullPointerException 是个坏主意吗?

ios - 使用选择器 View 快速手动选择语言

ios - UITableViewCell 复选标记在点击时打开和关闭

objective-c - 点符号与方法符号

objective-c - 核心数据引用

ios - Swift:单击按钮时断言失败

ios - 从数据库中删除记录

mysql 空问题?