2016-04-12 73 views
1

我是新來的。希望可以有人幫幫我!如何在.plist文件數組內寫入字符串

我正在創建一個調整,其中我有AppList(Ryan Petrich)添加和工作,所以我在我的首選項中捆綁了所有應用程序的linkcell和每個應用程序的開關。

當我切換其中的一部分時,它會在首選項.plist中保存<key>ALvalue-com.some.app</key>和值<true/>

我試圖找出如何更改「鍵」「boolValue」的這個結構是這樣的:

AL-hd.plist文件

<dict> 
    <key>AL-hd</key> 
    <array> 
     <string>com.apple.AppStore</string> 
     <string>com.apple.gamecenter</string> 
     <string>com.apple.stocks</string> 
    </array> 
</dict> 
</plist> 

取而代之的是

<dict> 
    <key>ALvalue-com.apple.AppStore</key> 
    <true/> 
    <key>ALvalue-com.apple.gamecenter</key> 
    <true/> 
    <key>ALvalue-com.apple.stocks</key> 
    <true/> 
</dict> 
</plist> 

這是我APPLIST的.plist節省偏好文件AL-hd.plist:

<dict> 
     <key>cell</key> 
     <string>PSLinkCell</string> 
     <key>bundle</key> 
     <string>AppList</string> 
     <key>isController</key> 
     <string>1</string> 
     <key>label</key> 
     <string>Show apps</string> 
     <key>icon</key> 
     <string>Favorites.png</string> 
     <key>ALAllowsSelection</key> 
     <string>1</string> 
     <key>ALChangeNotification</key> 
     <string>com.your.companyChanged</string> 
     <key>ALSectionDescriptors</key> 
     <array> 
      <dict> 
       <key>footer-title</key> 
       <string>Check what apps you want to show up</string> 
       <key>items</key> 
       <array/> 
      </dict> 
      <dict> 
       <key>cell-class-name</key> 
       <string>ALCheckCell</string> 
       <key>icon-size</key> 
       <string>29</string> 
       <key>suppress-hidden-apps</key> 
       <string>1</string> 
       <key>title</key> 
       <string>All Applications</string> 
      </dict> 
     </array> 
     <key>ALSettingsKeyPrefix</key> 
     <string>ALvalue-</string> 
     <key>ALSettingsPath</key> 
     <string>/var/mobile/Library/Preferences/AL-hd.plist</string> 
    </dict> 

我搜索了很多,並嘗試了數百件事情。

謝謝!

我嘗試的一件事是創建第二個.plist,稍後嘗試複製該密鑰並將其粘貼爲第二個文件中的字符串。而在優先束添加一個按鈕,在.mm文件這個動作(有沒有運氣):

- (void)save 
{ 
    NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier]; 

    // Either this or whatever works from link after this 
    NSString *prefPath = @"/User/Library/Preferences/com.your.company.plist"; 
    NSString *showPath = @"/User/Library/Preferences/AL-hd.plist"; 
    NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:prefPath];  
    NSMutableArray *show = [[NSMutableArray alloc] initWithContentsOfFile:showPath];  
    if ([[plistDict objectForKey:bundleID] boolValue]) { 
      [Show addObject:bundleID]; 
    } 
} 

對我來說是不相關的,如果我使用偏好束的.plist或使用第二個,然後複製那些線路以我需要的方式。

+0

目前還不清楚你的問題是什麼。你至少需要展示你的代碼並解釋它的工作方式與你需要的不同,然後也許有人可以幫助你。編輯你的問題本身,不要嘗試在評論中添加材料。 – CRD

+0

你想合併2個plist文件到一個? – phi

+0

不,我已經編輯答案更清晰...對不起,我的英語! – Olivier

回答

0

像這樣。

  1. 創建一個新的.plist文件並作爲屬性列表打開。

  2. 點擊+在裏面的信息屬性列表中創建一個新的屬性。

  3. 命名您的財產,例如 - 「文本」設置類型爲「陣列」。

  4. 在上面創建的數組中添加新項目,併爲每個項目輸入您的文本。

  5. 現在在你的視圖控制器類中,你必須這樣做。

    //ViewController.h 
    
        @property (nonatomic,strong)NSArray *plistDataArr; 
    
        //ViewController.m 
    
    
    -(NSArray*) plistDataArr 
        { 
        if(! _plistDataArr) 
        { 
         NSString *filePath = [[NSBundle mainBundle]pathForResource:@"YOUR Plist file name" ofType:@"plist"]; 
        _plistDataArr = [NSArray arrayWithContentsOfFile:filePath]; 
        } 
        return _plistDataArr; 
    
        } 
    
        //viewDidLoad 
    
        NSMutableArray *tempArr=[NSMutableArray arrayWithArray:self. _plistDataArr]; 
    
+0

非常感謝你!但是我沒有.m和.h文件。只有.mm。我還不知道如何將這些文件更改爲.mm。這發生在我身上,我創立的所有例子都像你的... – Olivier

+0

Plz upvote我的答案,以便其他人也可以從中受益。 –