Buat kelas pembantu untuk membaca dan menulis ke/dari plist

Pertama-tama, ini bukan pertanyaan tentang cara membaca atau menulis ke plist.

Saya telah membaca dan menulis ke PList yang sama dari berbagai bagian program saya dan saya sampai pada titik di mana saya bosan mengulangi kode berulang kali dan saya berpikir untuk membuat kelas yang dapat digunakan kembali untuk jenis tugas ini tetapi saya ingin melakukannya pastikan ini bukan ide gila.

  1. Apa yang Anda gunakan untuk membaca dan menulis ke plist yang sama dari berbagai bagian program Anda?
  2. Apakah Anda melihat masalah kinerja dengan menggunakan bantuan untuk membaca dan menulis ke plist.
  3. Apakah ini terdengar seperti ide gila?

Terima kasih banyak


person fs_tigre    schedule 14.05.2014    source sumber


Jawaban (4)


Saya pribadi membuatnya: DI SINI

Pada dasarnya, Anda membuat subkelas dengan nama properti yang cocok dengan kunci Anda dan diisi saat runtime.

Daftar Anda:

masukkan deskripsi gambar di sini

Dan subkelas:

#import "PlistModel.h"

@interface CustomModel : PlistModel

@property (strong, nonatomic) NSString * StringPropertyKey;
@property (strong, nonatomic) NSDate * DatePropertyKey;
@property (strong, nonatomic) NSArray * ArrayPropertyKey;
@property (strong, nonatomic) NSDictionary * DictionaryPropertyKey;

@property int IntPropertyKey;
@property BOOL BoolPropertyKey;
@property float FloatPropertyKey;

@end

Dan akses:

[CustomModel plistNamed:@"CustomModel" inBackgroundWithBlock:^(PlistModel *plistModel) {

    // Get the plist
    CustomModel * customModel = (CustomModel *)plistModel;

    // Populated properties 
    NSLog(@"PlistIncluded - StringProperty: %@", customModel.StringPropertyKey);
    NSLog(@"PlistIncluded - DateProperty: %@", customModel.DatePropertyKey);
    NSLog(@"PlistIncluded - ArrayProperty: %@", customModel.ArrayPropertyKey);
    NSLog(@"PlistIncluded - DictionaryProperty: %@", customModel.DictionaryPropertyKey);
    NSLog(@"PlistIncluded - IntProperty: %i", customModel.IntPropertyKey);
    NSLog(@"PlistIncluded - BoolProperty: %@", customModel.BoolPropertyKey ? @"YES" : @"NO");
    NSLog(@"PlistIncluded - FloatProperty: %f", customModel.FloatPropertyKey);

}];

Itu disimpan secara otomatis di dealloc, atau Anda dapat memanggil simpan. Jika itu bukan bundel plist dan Anda sedang mengeditnya, Anda dapat mengatur propertinya dan properti tersebut akan secara otomatis menyinkronkan Plist.

person Logan    schedule 14.05.2014
comment
Terima kasih banyak, saya akan melihatnya. - person fs_tigre; 14.05.2014
comment
Keren, ini cukup baru, jadi beri tahu saya jika Anda menemukan masalah yang mungkin saya lewatkan. Sudah cukup konsisten dalam proyek tempat saya mengembangkannya :) - person Logan; 14.05.2014

  1. Sepasang fungsi pembantu sudah cukup
  2. saya kira tidak demikian
  3. Tidak, itu ide yang bagus
person Andrey Chernukha    schedule 14.05.2014

  1. Saya menggunakan pengelola data dengan fungsi pembantu sehingga data dipisahkan dari lapisan aplikasi lainnya.
  2. Tidak ada.
  3. Gila? Tidak dibutuhkan? Ya.
person ColdLogic    schedule 14.05.2014

1) Anda bisa menggunakan kelas daripada objek

2) Tidak. Tapi apa yang membuat Anda berpikir mungkin ada?

3) Tentu saja tidak, sekali lagi, menurut Anda mengapa demikian?

Fakta bahwa Anda menanyakan 2 secara khusus, dan pada tingkat lebih rendah 3 menyiratkan bahwa Anda mungkin memiliki asumsi atau kesalahpahaman yang salah tentang sesuatu. Mungkin berguna bagi Anda untuk menjelaskan alasan Anda di balik menanyakan hal tersebut.

person Gruntcakes    schedule 14.05.2014