在NSDictionary中存储各种数据类型的新对象

时间:2014-12-28 20:04:49

标签: objective-c cocoa cocoa-touch objective-c-literals

Realm documentation site上的Realm迁移示例显示了一个带有新NSString对象的示例。这个例子很简单,也很好解释。

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

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

  • NSDate
  • NSData
  • RLMArray
  • NSIntegerint
  • doublefloatCGFloat
  • long
  • boolBOOL

2 个答案:

答案 0 :(得分:3)

ObjC / Cocoa中只有某些类型的对象具有这样的文字快捷方式。 (从历史上看,NSString实际上是具有此类语法的 sole 类,但有几个是added recently-ish by the Clang compiler。)

NSDateNSDataRLMArray没有字面语法;这些需要用适当的构造方法创建。

doublelongBOOL等原始类型无法直接存储在NSDictionary中,但可以使用“糖”{{1 ,即:

@()

这会将值放入newObject[@"numFrobs"] = @(anInteger); 实例,然后需要将其解包以检索原始值:

NSNumber

答案 1 :(得分:-1)

考虑它的最好方法就是在代码中在内存中创建一个Object。 @“”是NSString的缩写形式,但您也可以使用[NSString stringWithFormat:@“”]