数据存储

File(文件型)

FileBrowser

Swift-FileBrowser

Cache(缓存型)

NSUserDefault

类似于 Android 中的 SharedPreference 以及 Web 的 LocalStorage,iOS 中也提供了便捷的可持久化的存储方案:NSUserDefault。NSUserDefault 更多的表现像个属性列表,可以看做 plist 文件的封装好的接口。NSUserDefaults 中主要可以存放以下六类接口:

  • NSData
  • NSString
  • NSNumber
  • NSDate
  • NSArray
  • NSDictionary

WriteData(写入数据)

创建一个 user defaults 方法有多个,最简单得快速创建方法:

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];
//添加数据到 user defaults:
[accountDefaults setObject:nameField.text forKey:UserDefaultNameKey];

也可以添加基本数据类型 int, float, bool 等,有相应得方法

[accountDefaults setBool:YES forKey:UserDefaultBoolKey];

如果是 Swift,用法如下:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("Coding Explorer", forKey: "userNameKey")

ReadData(读取数据)

从 UserDefault 中读取数据,方式就像从一个全局的 Dictionary 中读取数据:

 [accountDefaults objectForKey:NCUserDefaultNameKey]
 [accountDefaults boolForKey: UserDefaultBoolKey];

如果是 Swift,读取方式如下所示:

let defaults = NSUserDefaults.standardUserDefaults()
if let name = defaults.stringForKey("userNameKey")
{
    println(name)
}

CoreData

SQLite

FMDB

SQLite.swift

SQLite.playground Screen Shot

Realm

Primary Keys

@interface Dog : RLMObject
@property int key;
@property NSString *name;
@property NSInteger age;
@end

@implementation Dog : RLMObject
+ (NSString *)primaryKey {
    return @"key";
}
@end

RLM_ARRAY_TYPE(Dog)

@interface Owner : RLMObject
@property int key;
@property NSString *name;
@property RLMArray<Dog> *dogs;
@end

@implementation Owner : RLMObject
+ (NSString *)primaryKey {
    return @"key";
}
@end

在插入数据时,如果发现主键中数据存在重复的则会抛出异常:

Owner *owner = [Owner createOrUpdateInDefaultRealmWithObject:@{
    @"key": @0,
    @"name": @"Tim",
    @"dogs": @[
        @{@"key": @5, @"name": @"Rex", @"age": @3}
    ]
}];

NSLog(@"Number of owners: %u", (unsigned)[Owner allObjects].count);
NSLog(@"Number of dogs: %u", (unsigned)owner.dogs.count);
for (Dog *dog in owner.dogs) {
    NSLog(@"Dog %@", dog);
}
上一页
下一页