0

Realm 文档站点上的 Realm 迁移示例显示了一个带有新NSString对象的示例。这个例子很简单,解释得很好。

if (oldSchemaVersion < 2) {
    newObject[@"email"] = @"";  // creates an NSString object...
}

但是除了 之外的对象NSString呢?为了创建这些其他数据类型的对象,需要如何调整代码片段?

  • NSDate
  • NSData
  • RLMArray
  • NSInteger,int
  • double, float,CGFloat
  • long
  • bool,BOOL
4

2 回答 2

3

在 ObjC/Cocoa 中只有某些类型的对象有这样的字面快捷方式。(从历史上看,NSString实际上是唯一具有这种语法的类,但最近有几个是由 Clang 编译器添加的。)

NSDate,NSDataRLMArray;没有文字语法。这些需要使用适当的构造方法创建。

double像,long和等原始类型BOOL不能直接存储在 an 中NSDictionary,但可以使用 "sugar" 将它们包裹起来@(),即:

newObject[@"numFrobs"] = @(anInteger);

这会将值放入一个NSNumber实例中,然后需要将其解包以检索原始值:

NSInteger numFrobs = [newObject[@"numFrobs"] integerValue];
于 2014-12-28T20:23:05.487 回答
-1

考虑它的最佳方式就像在代码中在内存中创建一个对象一样。@"" 是 NSString 的缩写形式,但您也可以使用 [NSString stringWithFormat:@""]

于 2014-12-28T22:19:00.563 回答