문자열을 배열 요소로 Settings.bundle Root.plist에 저장하고 후속 실행시 Setting 번들에서 해당 문자열에 액세스 할 수 있습니다. 나는 이것에 대한 좋은 예를 찾을 수 없었다. 엑스 코드에서, 나는 Root.plist을 만들었으며이 같은 같습니다설정 번들에서 배열 요소를 만들고 액세스하는 방법
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>StringsTable</key>
<string>Root</string>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
<key>Title</key>
<string>My Title</string>
<key>Key</key>
<string>My Identifier</string>
<key>Values</key>
<array>
<string>my string 1</string>
<string>my string 2</string>
<string>my string 3</string>
</array>
</dict>
을 내가에서 값의 액세스를 시도하는 다음 코드를 사용하고 다음과 같이이 XML을 생성
Key
iPhone Setting Schema
Strings Filename
Preference Items
Item 0 (Title- My Title)
Type Title
Title My Title
Identifier My Identifier
Values
Item 0 my string 1
Item 1 my string 2
Item 3 my string 3
을 식별자 키 "My Identifier":
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *mystrings = [defaults arrayForKey:@"My Identifier"];
for (int i=0;i<3;i++) {
NSLog(@"%@", [mystrings objectAtIndex:i]);
}
런타임시 mystrings의 값은 0입니다. 따라서 "내 문자열 1", "내 문자열 2"및 "내 문자열 3"의 값은 NSLog에서 인쇄하지 않습니다.
사람이 좀 도와 수 있습니다. 또한 이러한 값을 업데이트하는 올바른 방법은 무엇입니까? 문제의
감사를 수행하지만 불행히도 그것은 작동하지 않습니다. mystrings의 값은 여전히 0x0입니다. 또한, "가치"키가 고유하지 않으므로 여러 가지 기본 설정 항목이있는 경우이 제안이 효과가 있다고 생각하지 않습니다. 지금까지 읽은 문서를 어떻게 해석했는지에 따라 키 "My Identifier"가 사용자 데이터의 고유 키로 지정해야하는 키이어야합니다. 당신은 바른 길 위에 있을지 모르지만 제가 말했던 것처럼, 그것은 효과가 없었습니다. – JeffB6688
@Jeff : 고유 한 키 _has_; 그것은 사전입니다. @ "My Identifier", @ "Value", @ "Yellow Zebras"등 원하는 키를 사용할 수 있지만 각 키 중 하나만 존재할 수 있습니다. 이 파일의 위치를 명확히 할 수 있습니까? 나는 그것이 당신의 진짜 문제일지도 모른다고 생각합니다. 어떤 문서를 말하는 겁니까? –
Root.plist는 설정의 일부입니다.내 Resources 폴더 안에있는 번들. 네, 고유 한 키를 지정해야한다는 것을 알고 있습니다. 새 항목이 "제목"항목 인 xcode에서 Root.plist 파일 내에 환경 설정 항목을 만들 때 xcode는 자동으로 4 개의 키 (유형, 제목, 식별자 및 기본값)를 만듭니다. "기본값"키를 "값"키로 변경할 수 있습니다. 그렇게하면 항목 키가 만들어집니다 (항목을 계속 추가 할 수 있습니다). 항목 키의 경우 문자열 값 (예 : '내 문자열 1')을 지정할 수 있습니다. 나는 다음 댓글 (제한된 크기)을 계속할 것입니다. – JeffB6688