将数据加载到UITextField不起作用

时间:2011-07-25 22:34:21

标签: ios nsdictionary

不知道为什么,但这根本不起作用。它应该从plist文件加载一些值,并将它们加载到一些UITextFields中。它确实输出了NSLogs你想要的一切,但是UITextFields上的文字并不相同。它似乎随机选择放在哪里。

            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSMutableString stringWithFormat:@"%@.plist",file]];

    NSDictionary *loadDict;

    if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
        NSLog(@"hey its there!");
        loadDict = [[NSDictionary alloc] initWithContentsOfFile:filePath];

        [numSidesBox setText:[loadDict valueForKey:@"numSides"]];
        NSLog([loadDict valueForKey:@"numSides"]);
        [numSidesBox setText:[loadDict valueForKey:@"numDice"]];
        NSLog([loadDict valueForKey:@"numDice"]);
        [numSidesBox setText:[loadDict valueForKey:@"modifier"]];
        NSLog([loadDict valueForKey:@"modifier"]);
        [numSidesBox setText:[loadDict valueForKey:@"numRolls"]];
        NSLog([loadDict valueForKey:@"numRolls"]);
    }
    else{
        NSLog(@"hey its not =(");
    }

2 个答案:

答案 0 :(得分:1)

您似乎一次又一次地设置同一文本框的文本。因此,numSidesBox应始终包含[loadDict valueForKey:@"numRolls"]的文字。我假设您有多个文本字段,因此只需将numSidesBox更改为其他变量,例如numDiceBox或您称之为的任何变量。

P.S。我还建议您使用objectForKey:而不是valueForKey:

答案 1 :(得分:1)

你说“TextFields”复数,但你只使用一个UITextField(?)。

[numSidesBox setText:[loadDict valueForKey:@"numSides"]];
NSLog([loadDict valueForKey:@"numSides"]);
[numSidesBox setText:[loadDict valueForKey:@"numDice"]];
NSLog([loadDict valueForKey:@"numDice"]);
[numSidesBox setText:[loadDict valueForKey:@"modifier"]];
NSLog([loadDict valueForKey:@"modifier"]);
[numSidesBox setText:[loadDict valueForKey:@"numRolls"]];
NSLog([loadDict valueForKey:@"numRolls"]);

只有numSidesBox?这是对的吗?