2013-07-12 56 views
5

插入值,我有兩個方法,爲什麼coredata被返回空數組,而我在表

在第一種方法,我不救價值觀核心數據,而在其他的,我只是獲取它們。

插入後,當我在同一個方法中獲取數據時,它顯示值,但是當我嘗試在其他方法中獲取數據時,如果返回空值。

我的儲蓄方法是

-(void) saveloginData:(NSString *)facebookTok username:(NSString *)userName password:(NSString*)password flag:(NSString *)flag { 


NSError *error; 

NSManagedObjectContext *context = [self managedObjectContext]; 



NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity:[NSEntityDescription entityForName:@"SignIn" inManagedObjectContext:context]]; 
[fetchRequest setIncludesPropertyValues:NO]; //only fetch the managedObjectID 

NSString *facebookTokenData = facebookTok; 
NSString *usernameData = userName; 
NSString *passwordData = password; 
NSString *flagData = flag; 


NSLog(@"Facebook Token%@\nUsername%@\npassword%@\nflat%@\n",facebookTokenData,usernameData,passwordData,flagData); 


SignIn *signIn = [NSEntityDescription 
             insertNewObjectForEntityForName:@"SignIn" 
             inManagedObjectContext:context]; 

signIn.facebookToken = facebookTokenData; 
signIn.username = usernameData; 
signIn.password = passwordData; 
signIn.flag = flagData; 


NSEntityDescription *entity = [NSEntityDescription entityForName:@"SignIn" 
              inManagedObjectContext:context]; 

[fetchRequest setEntity:entity]; 

NSArray *fetchedArray = [context executeFetchRequest:fetchRequest error:&error]; 


for (SignIn *info in fetchedArray) { 
      \\ THis executes and shows values, proves that value are inserted. 

    NSLog(@"Name ~~~~ : %@", info.username); 
    NSLog(@"Password ~~~~~~~~ :%@", info.password); 
    NSLog(@"FLAG ~~~~~~~~~~~ %@",info.flag); 
    NSLog(@"Facebook Token %@", info.facebookToken); 
} 
} 

我的檢索方法是

-(NSArray*) getLoginData { 

NSError *error; 

NSManagedObjectContext *context = [self managedObjectContext]; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

NSEntityDescription *entity = [NSEntityDescription entityForName:@"SignIn" 
              inManagedObjectContext:context]; 


[fetchRequest setEntity:entity]; 

NSArray *fetchedData = [[NSArray alloc] init]; 


fetchedData = [context executeFetchRequest:fetchRequest error:&error]; 

NSLog(@"The count of Array %d", [fetchedData count]); \\ HERE COUNT IS ZERO, WHY? 


for (SignIn *info in fetchedData) { 
    NSLog(@" FF Name ~~~~ : %@", info.username); 
    NSLog(@"Password ~~~~~~~~ :%@", info.password); 
    NSLog(@"FLAG ~~~~~~~~~~~ %@",info.flag); 
    NSLog(@"Facebook Token %@", info.facebookToken); 
} 


return fetchedData; 
} 

請指導說,我現在做的錯誤。

+0

是管理對象範圍內這兩種方法一樣嗎? –

回答

4

您的問題是,您需要保存conext以便稍後獲取實體。

NSManagedObjectContext save:嘗試將未保存的更改提交到已註冊對象的持久性存儲中。

- (BOOL)save:(NSError **)error 

參數:error:一個指向NSError對象。您不需要創建一個NSError對象。如果您通過NULL,保存操作將在第一次失敗後中止。

返回值YES如果保存成功,否則NO

所以,你需要保存上下文您修改對象之後:

signIn.facebookToken = facebookTokenData; 
signIn.username = usernameData; 
signIn.password = passwordData; 
signIn.flag = flagData; 

[context save:NULL]; // NULL if you don't need to handle error 
+0

爲我工作,但有一件事,我想問,關於這個... – Duaan

+0

我接受親愛的,非常感謝幫助我:) – Duaan

相關問題