2011-07-25 23 views
0

不知道爲什麼,但這根本行不通。它應該從plist文件加載一些值,並將它們加載到一些UITextFields中。它使用NSLogs輸出你期望的所有內容,但是UITextFields上的文本不一樣。它幾乎看起來好像隨機選擇在哪裏放置什麼。將數據加載到UITextField中不起作用

  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 =("); 
    } 

回答

1

看來你是一次又一次地設置同一個文本框的文本。所以,numSidesBox應該總是包含[loadDict valueForKey:@"numRolls"]的文本。我假設你有多個文本字段,所以只需將numSidesBox更改爲其他變量,如numDiceBox或任何你稱之爲的字段。

P.S.我還建議使用objectForKey:而不是valueForKey:

+0

對不起,這是我的記憶的一部分複製/粘貼錯誤,並感謝objectForKey提示。我會記住這一點 – user663425

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?這是對的嗎?

+0

哦jeez多麼令人尷尬。似乎複製/粘貼有一點記憶的義務;)我很抱歉浪費你的時間。謝謝! – user663425

+0

沒問題的隊友。不要接受答案(接受亞歷克斯並投票給我)他首先回答。 – Peres