2016-04-12 4 views
1

Я новичок здесь. Надеюсь, кто-нибудь может мне помочь!Как написать строку внутри массива .plist-файла

Я создаю настройку, в которой добавлен и работает приложение AppList (Райан Петрич), поэтому у меня есть в моем распоряжении набор ссылок со всеми приложениями и включение/выключение для каждого приложения.

Когда я переключаю некоторые из них, он сохраняет <key>ALvalue-com.some.app</key> и значение <true/> в настройках .plist.

Я пытаюсь понять, как я могу изменить эту структуру «ключ» «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 повысит мой ответ, чтобы другие могли также воспользоваться преимуществами. –

 Смежные вопросы

  • Нет связанных вопросов^_^