สร้างคลาสตัวช่วยเพื่ออ่านและเขียนไปยัง / จาก plist

ก่อนอื่น นี่ไม่ใช่คำถามเกี่ยวกับวิธีการอ่านหรือเขียนลงใน plist

ฉันได้อ่านและเขียน PList เดียวกันจากส่วนต่างๆ ของโปรแกรมของฉัน และมาถึงจุดที่ฉันเบื่อที่จะต้องเขียนโค้ดซ้ำแล้วซ้ำเล่า และฉันกำลังคิดที่จะสร้างคลาสที่นำมาใช้ซ้ำได้สำหรับงานประเภทนี้ แต่ฉันอยากจะ ตรวจสอบให้แน่ใจว่านี่ไม่ใช่ความคิดที่บ้า

  1. คุณใช้อะไรในการอ่านและเขียนไปยัง plist เดียวกันจากส่วนต่างๆ ของโปรแกรมของคุณ
  2. คุณพบปัญหาด้านประสิทธิภาพโดยใช้ตัวช่วยในการอ่านและเขียนลงใน plist หรือไม่
  3. มันฟังดูเป็นความคิดที่บ้าหรือเปล่า?

ขอบคุณมาก


person fs_tigre    schedule 14.05.2014    source แหล่งที่มา


คำตอบ (4)


ฉันสร้างมันขึ้นมาเป็นการส่วนตัว: ที่นี่

โดยพื้นฐานแล้ว คุณสร้างคลาสย่อยที่มีชื่อคุณสมบัติตรงกับคีย์ของคุณ และคลาสย่อยนั้นจะถูกเติมในขณะรันไทม์

รายการของคุณ:

ป้อนคำอธิบายรูปภาพที่นี่

และคลาสย่อย:

#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

และการเข้าถึง:

[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);

}];

มันจะบันทึกอัตโนมัติในการจัดสรรคืนหรือคุณสามารถเรียกบันทึกได้ หากไม่ใช่บันเดิล plist และคุณกำลังแก้ไข คุณสามารถตั้งค่าคุณสมบัติ จากนั้นคุณสมบัติจะซิงค์ Plist โดยอัตโนมัติ

person Logan    schedule 14.05.2014
comment
ขอบคุณมากครับ จะลองดูครับ - person fs_tigre; 14.05.2014
comment
เยี่ยมเลย มันค่อนข้างใหม่ ดังนั้นโปรดแจ้งให้เราทราบหากคุณพบปัญหาที่ฉันอาจพลาดไป มันค่อนข้างสอดคล้องกันในโครงการที่ฉันพัฒนาขึ้นเพื่อ :) - person Logan; 14.05.2014

  1. ฟังก์ชั่นตัวช่วยคู่หนึ่งก็น่าจะเพียงพอแล้ว
  2. ฉันไม่คิดอย่างนั้น
  3. ไม่ มันเป็นความคิดที่ดี
person Andrey Chernukha    schedule 14.05.2014

  1. ฉันใช้ตัวจัดการข้อมูลที่มีฟังก์ชันตัวช่วย ดังนั้นข้อมูลจึงถูกแยกออกจากเลเยอร์อื่นๆ ของแอปพลิเคชัน
  2. ไม่มี.
  3. คลั่งไคล้? ไม่จำเป็น? ใช่.
person ColdLogic    schedule 14.05.2014

1) คุณสามารถใช้คลาสมากกว่าวัตถุได้

2) ไม่ แต่อะไรทำให้คุณคิดว่าอาจมี?

3) ไม่แน่นอน อีกครั้ง ทำไมคุณถึงคิดว่าเป็นเช่นนั้น?

ความจริงที่ว่าคุณถาม 2 โดยเฉพาะ และในระดับที่น้อยกว่า 3 บ่งบอกเป็นนัยว่าคุณอาจมีสมมติฐานที่ผิดหรือความเข้าใจผิดเกี่ยวกับบางสิ่งบางอย่าง มันอาจจะเป็นประโยชน์สำหรับคุณที่จะอธิบายเหตุผลของคุณในการถามสิ่งเหล่านั้น

person Gruntcakes    schedule 14.05.2014