2

、、、、および 画面に合わせてログインする目的でRegistrationController保存する画面があります。email-idpasswordDOBHeightWeightlogininControlleremail-idpassword

さて、いくつかのthird画面 では、ログインしたユーザーの plist から , のみを取得してラベルに表示する必要Heightがあります。一致すると、..それが修正された場合、同じものの plist から をフェッチする方法が得られます。Weightemail-idpasswordLoginViewControllerHeightWeightHeightWeight

保存された plist から文字列でフェッチするにはどうすればよいですか?

これが私のコードです:

-(NSArray*)readFromPlist
 {
   NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
  NSUserDomainMask, YES); 
  NSString *documentsDirectory = [documentPaths objectAtIndex:0];
 NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"XYZ.plist"];

   NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:documentPlistPath];

   NSArray *valueArray = [dict objectForKey:@"title"];

   return valueArray;

 }



- (void)authenticateCredentials {
    NSMutableArray *plistArray = [NSMutableArray arrayWithArray:[self readFromPlist]];

    for (int i = 0; i< [plistArray count]; i++)
    {
        id object = [plistArray objectAtIndex:i];

        if ([object isKindOfClass:[NSDictionary class]]) {
            NSDictionary *objDict = (NSDictionary *)object;

            if ([[objDict objectForKey:@"pass"] isEqualToString:emailTextFeild.text] && [[objDict objectForKey:@"title"] isEqualToString:passwordTextFeild.text])
            {
                NSLog(@"Correct credentials");
                return;
            }
            NSLog(@"INCorrect credentials");
        } else {
             NSLog(@"Error! Not a dictionary");
        }
    }
}
4

2 に答える 2

1

ログイン画面で資格情報を入力して、取得した plist と資格情報が一致するかどうかを確認し、その plist を次のコントローラーに渡します。このようなことをしてください

UserViewController *controller = [[UserViewController alloc] initWithNibName:@"UserViewController" bundel:nil];
[controller setUserDictionary:yourPlistDictionary];
[self.navigationController pushViewController:controller animated:YES];
[controller release];

UserViewController には、表示するデータを格納する NSDictionary インスタンスがあります。それが役立つことを願っています

于 2012-12-19T11:12:13.720 に答える
1

最初に plist ファイルから値全体を取得してから、これを格納NSArrayし、プロパティNSMutableArrayで値を取得します。以下の例全体を参照してください。objectAtIndexvalueForKey

アップデート :

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"yourFileName" ofType:@"plist"];
NSArray *contentArray = [NSArray arrayWithContentsOfFile:plistPath];
NSMutableArray *yourArray = [[NSMutableArray alloc] initWithArray:contentArray];

    for (int i = 0; i< [yourArray count]; i++)
    {
        id object = [yourArray objectAtIndex:i];

        if ([object isKindOfClass:[NSDictionary class]]) {
            NSDictionary *objDict = (NSDictionary *)object;

           yourLableWeight.text = [[objDict objectForKey:@"Weight"];// set index with your requirement
         yourLableHeight.text = [[objDict objectForKey:@"Height"];

    }

これがあなたを助けることを願っています...

于 2012-12-19T11:12:34.093 に答える