Как я сериализирую простой объект в iPhone sdk?

Будет проще использовать атрибут data для мужских и женских входов, как это ..

<input type="radio" name="optradio" id="female" data-check-id="mtn1">

$(document).ready(function() {
  $('[name="optradio"]').change(function() {
    $('#lhr1 , #mtn1').prop('checked' , false);
    $('#'+$(this).attr('data-check-id')).prop('checked' , true);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
      <h2 align="center"><b><i>Form Validation Assignment</i></b></h2>
      <form id="vald" class="form-horizontal" action="">
        </div>
        <div class="form-check form-check-inline" id="radio1">
                <label class="control-label col-sm-2" for="name">Gender</label>
                <div class="container">
                        <label class="radio-inline">
                                <input type="radio" name="optradio" id="male" data-check-id="lhr1">Male
                              </label>
                              <label class="radio-inline">
                        <input type="radio" name="optradio" id="female" data-check-id="mtn1">Female
                              </label>
                      </div>
        </div>
    
        <input type="checkbox" name="lhr" value="lhr" id="lhr1"> You can go Lahore<br>
    <input type="checkbox" name="mtn" value="mtn" id="mtn1">You can go Multan<br>
        <div class="form-group">        
          <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn btn-default" id="add">Submit</button>
          </div>
        </div>
      </form>
    </div>

28
задан gerry3 6 February 2010 в 18:46
поделиться

3 ответа

Вы делаете это так же, как и в Mac OS X: ваши POCO должны соответствовать протоколу NSCoding . См. здесь для концептуальной справки и здесь для справки по NSCoding.

Если данные не так уж обширны и у вас нет смехотворно сложных отношений между вашими объектами возможно, лучший вариант - записать все в виде списка; его очень быстро выполнить и просто реализовать в коде. Как вы сказали, CoreData, вероятно, потребует много дополнительной работы для адаптации вашего кода, а sqlite действительно хорош только для хранения данных, которые идеально подходят для хранения в реляционной базе данных. Имейте в виду, что sqlite также работает медленнее и использует больше ресурсов, чем работа с двоичными списками.

14
ответ дан 28 November 2019 в 03:20
поделиться

Для сериализации пользовательского объекта вам просто необходимо соответствовать протоколу NSCoding. Если ваш объект расширяет NSObject, все, что вам нужно сделать (я считаю), это реализовать их (пример для объекта person):

// Encode an object for an archive
- (void)encodeWithCoder:(NSCoder *)coder
{
    [super encodeWithCoder:coder];
    [coder encodeObject:name forKey:@“Name”];
    [coder encodeInteger:age forKey:@“Age”];
}
// Decode an object from an archive
- (id)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    name = [[coder decodeObjectForKey:@“Name”] retain];
    age  = [coder decodeIntegerForKey:@“Age”];
}

NSArray и NSDictionary уже реализуют методы для сериализации. Они будут сериализовать все объекты, которые они содержат (если объекты реализуют интерфейс NSCoder - они делают, если они расширяют NSObject). encodeWithCoder и initWithCoder NSObject ничего не делают по умолчанию, поэтому, если вы не реализуете свой собственный код в своих классах, ничего не сериализуется.

Если у вас есть NSArray или NSDictionary объектов, вы можете синхронизировать их, используя:

// Writing
- (BOOL)writeToFile:(NSString *)aPath atomically:(BOOL)flag;
- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag;
// Reading
- (id)initWithContentsOfFile:(NSString *)aPath;
- (id)initWithContentsOfURL:(NSURL *)aURL;
33
ответ дан stefanB 28 November 2019 в 03:20
поделиться

NSCoder - это стандартная идиома Какао для сериализации.

0
ответ дан 28 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: