2013-07-12 10 views
5

に値を挿入していながらcoredataがnullの配列を返すのはなぜ私は他に、私は単にそれらをフェッチしながら、私は、コアデータの値を保存しない、二つの方法、第1の方法では私はテーブル

を持っています。

挿入後、同じメソッドでデータをフェッチすると値が表示されますが、他のメソッドでフェッチしようとするとnullが返されます。

私の保存方法は

-(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

問題は、後でエンティティを取得するために、コンテキストを保存する必要があることです。

NSManagedObjectContext save:保存されていない変更を登録オブジェクトに永続ストアにコミットしようとします。

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

パラメータ:errorNSErrorオブジェクトへのポインタ。 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

私のために働いたが、1つは、これについては、質問したい... – Duaan

+0

私は親愛なる、非常に私を助けてくれてありがとう:) – Duaan

関連する問題