2013-10-05 36 views
0

列表定義:核心數據讀取請求語法查詢

@property (nonatomic, strong) NSArray *list; 

@synthesize list = _list; 

之間的區別是什麼:

list = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

self.list = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

第一回報核心數據的所有記錄但第二個沒有返回。

+1

'list'定義在哪裏? – iCode

+0

我編輯了這個問題來顯示如何定義列表。 – RGriffiths

+1

您有一個屬性'self.list',它被合成爲實例變量'_list'。但是'list'變量來自哪裏呢? - 這兩項任務的RHS是相同的。這不可能是他們返回不同的結果。 –

回答

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

+0

我真的很感激你花這個時間寄給我。我只是學習Objective-C,並在埃塞俄比亞的偏遠地區工作,資源/互聯網非常難以訪問。非常感謝 - 我會研究這一點。 – RGriffiths

+0

@RichardGriffiths不用客氣 –