列表已定义:
@property (nonatomic, strong) NSArray *list;
@synthesize list = _list;
有什么区别:
list = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
和
self.list = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
第一个返回 Core Data 中的所有记录,但第二个不返回任何内容。
最佳答案
我认为您必须阅读有关 Encapsulating Data 的应用文档.
特别是,在第一个代码片段中,您要通过访问器方法包装一个名为 _list
的实例变量。
一般来说,在 OOP 中,它们也称为 setter 和 getter。关于它们的优点的很好的讨论可以在 Why use getters and setters? 中找到。 .
所以,其他人的评论是正确的。 list
变量从何而来?
您需要了解的一件重要事情是,点语法是访问方法调用的一种简洁方式。因此,例如:
NSString *nickname = person.nickname;
person.nickname = @"This is my nickname";
等于
NSString *nickname = [person nickname];
[person setNickname:@"This is my nickname"];
一个注释。从 XCode 4.4 开始,新的 Apple LLVM 编译器 4.0 允许您跳过 @synthesize
指令。在底层,编译器生成一个带有 _
后缀的实例变量。更多引用Automatic Property Synthesis With Xcode 4.4 .
关于ios - 核心数据Fetch请求语法查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195644/