2014-04-26 35 views
0

我使用NSUserDefaults的存儲以下信息:UITextView的文本顏色和字體沒有得到設置

NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; 
[settings setObject:[NSArray arrayWithObjects:@"An Invitation.png",@"Apple Color Emoji ",[NSKeyedArchiver archivedDataWithRootObject:[UIColor redColor]], nil] forKey:@"An Invitation"]; 

我檢索另一個類相同的信息:

NSDictionary *dict = [settings dictionaryRepresentation]; 
for(id item in [dict allKeys]) { 
    NSLog(@"settings array is---- %@",[settings objectForKey:item]); 
    if([[dict objectForKey:item] isKindOfClass:[NSArray class]]) { 
     if([[settings objectForKey:@"CardImg"] isEqualToString:[[dict objectForKey:item] objectAtIndex:0]]) { 
      NSLog(@"received font is ---- %@",[[dict objectForKey:item] objectAtIndex:1]); 
      [self.txtView setFont:[UIFont fontWithName:[NSString stringWithFormat:@"%@",[[dict objectForKey:item] objectAtIndex:1]] size:20]]; 
      NSLog(@"received font is ---- %@",[[self.txtView font] fontName]); 
      UIColor *txtcolor =(UIColor*) [ NSKeyedUnarchiver unarchiveObjectWithData:[[dict objectForKey:item] objectAtIndex:2]]; 
      NSLog(@"received text color is ---- %@", [[dict objectForKey:item] objectAtIndex:2]); 
      [self.txtView setTextColor:txtcolor]; 
     } 
    } 
} 

的字體和顏色self.textView不會根據字典中的值進行更改。在打印[self.txtView.font fontName]我收到空,但在打印[[dict objectForKey:item] objectAtIndex:1]時,我正在收到「Apple Color Emoji」。字體和顏色按照XIB屬性檢查器中的默認值進行設置。請幫我在這裏。

回答

0

字體爲零,因爲字體名稱末尾有空格。並且顏色需要被取消存檔。從字體名稱中刪除空格並以這種方式檢索保存的設置:

NSArray *retrieved = [settings objectForKey:@"An Invitation"]; 

NSString *imageName = retrieved[0]; 
UIFont *font = [UIFont fontWithName:retrieved[1] size:12]; 
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:retrieved[2]];