核心数据获取请求语法查询

时间:2013-10-05 08:28:32

标签: ios objective-c core-data

列出了定义:

@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中的所有记录,但第二个不返回任何内容。

1 个答案:

答案 0 :(得分:1)

我认为您必须阅读有关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的进一步参考。