2012-07-30 2 views
0

내 응용 프로그램을 통해 PSMultiValueSpecifier 제목 배열 및 값 배열을 변경하고 싶습니다. 이것이 내 Root.plist 파일입니다.응용 프로그램을 통해 설정에서 PSMultiValueSpecifier 제목 및 값으로 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>PreferenceSpecifiers</key> 
<array> 
    <dict> 
     <key>Type</key> 
     <string>PSGroupSpecifier</string> 
     <key>Title</key> 
     <string>Login Information</string> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSTextFieldSpecifier</string> 
     <key>Title</key> 
     <string>Restaurant Code</string> 
     <key>Key</key> 
     <string>Restaurant_Code_key</string> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSTextFieldSpecifier</string> 
     <key>Title</key> 
     <string>Password   </string> 
     <key>Key</key> 
     <string>Password_key</string> 
     <key>IsSecure</key> 
     <true/> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSToggleSwitchSpecifier</string> 
     <key>Title</key> 
     <string>Remember Login Information</string> 
     <key>Key</key> 
     <string>Remember_Login_Information_key</string> 
     <key>DefaultValue</key> 
     <false/> 
     <key>TrueValue</key> 
     <true/> 
     <key>FalseValue</key> 
     <false/> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSGroupSpecifier</string> 
     <key>Title</key> 
     <string>Menu Content</string> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSMultiValueSpecifier</string> 
     <key>Title</key> 
     <string>Default Language</string> 
     <key>Key</key> 
     <string>Default_Language_key</string> 
     <key>DefaultValue</key> 
     <integer>0</integer> 
     <key>Titles</key> 
     <array> 
      <string>English</string> 
      <string>Spanish</string> 
     </array> 
     <key>Values</key> 
     <array> 
      <integer>0</integer> 
      <integer>1</integer> 
     </array> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSToggleSwitchSpecifier</string> 
     <key>Title</key> 
     <string>Update Data on Launch</string> 
     <key>Key</key> 
     <string>Update_Data_key</string> 
     <key>DefaultValue</key> 
     <false/> 
     <key>TrueValue</key> 
     <true/> 
     <key>FalseValue</key> 
     <false/> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSGroupSpecifier</string> 
     <key>Title</key> 
     <string></string> 
    </dict> 
    <dict> 
     <key>Type</key> 
     <string>PSToggleSwitchSpecifier</string> 
     <key>Title</key> 
     <string>Reset on Next Launch</string> 
     <key>Key</key> 
     <string>Reset_key</string> 
     <key>DefaultValue</key> 
     <false/> 
     <key>TrueValue</key> 
     <true/> 
     <key>FalseValue</key> 
     <false/> 
    </dict> 

</array> 
<key>StringsTable</key> 
<string></string> 
</dict> 
</plist> 


I tried to change like this Through my application. 
<dict> 
<key>Type</key> 
<string>PSMultiValueSpecifier</string> 
<key>Title</key> 
<string>Default Language</string> 
<key>Key</key> 
<string>Default_Language_key</string> 
<key>DefaultValue</key> 
<integer>0</integer> 
<key>Titles</key> 
<array> 
<string>English</string> 
</array> 
<key>Values</key> 
<array> 
<integer>0</integer> 
</array> 
</dict> 

그러나 이것은 제목과 값을 변경하지 않습니다. 제발 도와주세요. 코드는 아래에 나와 있습니다. 당신은이 작업을 수행 할 수 없습니다

NSURL * settingsURL = [[NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"Settings" withExtension:@"bundle"]] 
         URLForResource:@"Root" withExtension:@"plist"]; 
NSMutableDictionary * settingsDict = [NSMutableDictionary dictionaryWithContentsOfURL:settingsURL]; 
NSMutableArray *settingsArr = [settingsDict objectForKey:@"PreferenceSpecifiers"]; 

NSMutableDictionary *loTempDict = [[NSMutableDictionary alloc] init]; 
loTempDict = [settingsArr objectAtIndex:5]; 

NSArray *title_Array = [loTempDict objectForKey:@"Titles"]; 
NSArray *value_Array = [loTempDict objectForKey:@"Values"]; 

NSArray *lanArray_title = [NSArray arrayWithObject:@"French"]; 
NSArray *lanArray_value = [NSArray arrayWithObject:@"0"]; 

[loTempDict setObject:lanArray_title forKey:@"Titles"]; 
[loTempDict setObject:lanArray_value forKey:@"Values"]; 
[settingsArr replaceObjectAtIndex:5 withObject:loTempDict]; 


NSLog(@"final settingsArr ===%@ ",settingsArr); 

NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"]; 

[settingsArr writeToFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"] atomically: TRUE]; 

감사

답변

-1

이 문제

NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"]; 

[settingsDict setValue:settingsArr forKey:@"PreferenceSpecifiers"]; 

[settingsDict writeToFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"] atomically: TRUE]; 
+1

아니요. 앱의 기본 번들에 쓸 수 없기 때문에 도움이되지 않습니다. -1. –

0

를 해결합니다. 보안상의 이유로 앱 번들에 글을 쓸 수 없습니다. 가장 좋은 대안은 수정하려는 파일을 앱 번들 디렉토리에서 라이브러리 또는 문서 디렉토리로 복사하는 것입니다.이 디렉토리는 쓰기 가능하며 파일 내부의 파일을 업데이트 할 수 있습니다.