NSUserDefaults vs sqlite3

后端 未结 2 1914
春和景丽
春和景丽 2021-01-15 09:13

I have a small iPhone app that stores a list of objects. The user can add and remove objects, but this list will remain fairly small (most users would have 10-30 objects). <

相关标签:
2条回答
  • 2021-01-15 09:51

    NSUserDefaults is for user preferences, usually basic objects like NSString or NSNumber. Sqlite, serializing a collection of objects in a property list, or Core Data are all valid options for storing user data such as model objects you created.

    You're not going to see a speed difference, but it's still best to pick the correct mechanism for what you're doing. If it's just preferences then use NSUserDefaults, otherwise I would serialize your objects to a plist. If you're new to Cocoa I would avoid Core Data and even sqlite at first, to give yourself a chance to learn the basics first.

    0 讨论(0)
  • 2021-01-15 10:02

    Try with NSCoding protocol. Declare your class to implement NSCoding protocol:

    @interface Person : NSObject <NSCoding>
    

    Previous line promises to implement the following methods:

    -(id)initWithCoder:(NSCoder *)coder;
    -(void)encodeWithCoder:(NSCoder *)coder;
    

    Your methods should look something like:

    -(void)encodeWithCoder:(NSCoder *)coder {
      [super encodeWithCoder:coder];
      [coder encodeObject:firstName forKey:@"firstName"];
      [coder encodeObject:lastName forKey:@"lastName"];
    }
    
    -(id)initWithCoder:(NSCoder *)coder {
      [super init];
      firstName = [[coder decodeObjectForKey:@"firstName"] retain];
      lastName = [[coder decodeObjectForKey:@"lastName"] retain];
      return self;
    }
    
    0 讨论(0)
提交回复
热议问题