2010-03-07 31 views
1

我在我的項目中有一個ConfiguracaoDaApp類,它是一個NSManagedObject子類。我沒有更改XCode生成的默認代碼。如何從executeFetchRequest方法的返回中檢索業務對象?

我聲明該類型的實例變量在我的應用程序委託並以我appDidFinishLaunching方法,我一直在嘗試分配它是從一個對象的值從數據庫中檢索這樣的:

NSFetchRequest  *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ConfiguracaoDaApp" inManagedObjectContext:self.managedObjectContext]; 

    [request setEntity:entity]; 
    configDaApp = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0]; 

的問題是該行

[[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0]; 

不返回ConfiguracaoDaApp類型的對象。

我試圖改變行這樣的:

configDaApp = [[[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0] entity]; 

然後,NSEntityDescriptor返回和問題依舊。

所以,我的問題是:如何從executeFetchRequest中檢索真正的業務對象?

在此先感謝。

Obs:原諒我,如果這是一個初學者的問題,但是我的第一個iPhone應用程序。

+0

那麼'[[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0];'return? –

+0

用你問的線,它會返回一個(ConfiguracaoDaApp_ConfiguracaoDaApp_ *)。兩次連接我的業務對象類的名稱。 – reinaldoluckman

+0

你的問題在別處。您的初始嘗試(將'executeFetchRequest:error:'的結果視爲「ConfiguracaoDaApp」對象的數組)是正確的。 – gerry3

回答

0

我剛弄明白髮生了什麼事:

[[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0]; 

返回一個自動釋放的對象,當我試圖訪問的代碼的其他部分的財產,其內容是應用程序,因爲原來的ConfiguracaoDaApp的內存垃圾對象由autorelease池釋放。我的財產被宣佈保留,但該對象無論如何autoreleased。所以我明確表示保留在該行:

configDaApp = [[[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0] retain]; 

然後一切正常。

謝謝,無論如何,夥計們。

+0

只是不要忘記釋放dealloc。 :d – reinaldoluckman

相關問題