2013-08-08 3 views
1

나는 Objective-C에 익숙하지 않으며 문제에 대한 답을 찾을 수 없습니다. 나는 다음 텍스트를 입력하는 텍스트 필드를 사용하여 간단한 프로그램을 작성했습니다 사용 :NSUserDefaults에 서식있는 텍스트 저장

SaveFBCover1 = Cover1.stringValue; 
DefaultCover1 = [NSUserDefaults standardUserDefaults]; 
[DefaultCover1 setObject:SaveFBCover1 forKey:@"SaveCover1"]; 
[DefaultCover1 synchronize]; 

그것을 저장합니다. 그 후에이 작업을 수행합니다.

DefaultCover1 = [NSUserDefaults standardUserDefaults]; 
loadFBCover1 = [DefaultCover1 objectForKey:@"SaveCover1"]; 
FBCoverImageText = [NSString stringWithFormat:@"%@", loadFBCover1]; 

로드하려면 다음을 수행하십시오. 하지만 내가 원하는 것은 색상, 글꼴 등을 사용하여 서식있는 텍스트를 저장하고로드하는 것입니다.

어떤 이유로 든 저장 또는로드에 실패합니다. 누군가 내 실수를 지적 할 수 있습니까?

+1

'Cover1'의 유형은 무엇입니까? – Tim

+0

NSAttributedString을 찾습니다. –

+0

Cover1은 NSTextField입니다. –

답변

0

SaveFBCover1Cover1.stringValue에서 NSString을 가져오고 있기 때문에 NSAttributedString이 아닙니다. 코드가 해당 문자열을 제대로 저장하는 것처럼 보입니다. 다시로드 할 때 문자열을 다시 가져 오는 것일 수 있습니다. 그러나 특성 문자열로 시작하지 않았기 때문에 특성을 얻지 못하거나 또는 특성을 얻지 못했기 때문에 특성을 얻지 못합니다. 텍스트보기의 텍스트를 별도로 저장하십시오.

당신은, 당신은 (별로,하지만) 문자열을 저장하고로드 좀 더 일을해야 할거야 그러나

SaveFBCover1 = Cover1.attributedStringValue; 

를 사용하여 기인 문자열을 얻을 수 있습니다. NSAttributedStringNSUserDefaults에 직접 저장할 수있는 유형이 아니므로 먼저 NSData의 인스턴스로 직렬화해야합니다. 열쇠가있는 아카이버를 사용하면 아주 쉽게 할 수 있습니다. 아카이브 및 직렬화 프로그래밍 가이드에서 Keyed Archives을 읽으십시오.

+0

고마워, 그래도 여전히 사용할 수있는 방법을 알아 내지 못해 = (예를 들어 주시겠습니까?) –

+0

[내가 링크 된 문서의 예] (http://developer.apple.com/library) /mac/#documentation/Cocoa/Conceptual/Archiving/Articles/creating.html) – Caleb

+1

고마워요. 제게 많은 도움이됩니다! –

관련 문제