swift2 领域中的可选Int

sz81bmfz  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(194)

我试图在Realm中使用可选的Int,但我想得到了一个旧错误。

代码

dynamic var reps: Int? = nil

错误

'Property cannot be marked dynamic because its type cannot be represented in Objective-C'

我使用的是带有XCode 7.1的Realm 0.96.1
我知道在Realm文档中它说Int不是作为Optional而是作为https://twitter.com/realm/status/656621989583548416被支持。这是来自Realm twitter的,所以这就是为什么我感到困惑。Optional Int是被支持还是仍然不被支持?

hfsqlsce

hfsqlsce1#

从领域文档:
StringNSDateNSData属性可以使用标准Swift语法声明为可选或非可选。
使用RealmOptional声明可选数值类型:

class Person: Object {
    // Optional string property, defaulting to nil
    dynamic var name: String? = nil

    // Optional int property, defaulting to nil
    // RealmOptional properties should always be declared with `let`,
    // as assigning to them directly will not work as desired
    let age = RealmOptional<Int>()
}

let realm = try! Realm()
try! realm.write() {
    var person = realm.create(Person.self, value: ["Jane", 27])
    // Reading from or modifying a `RealmOptional` is done via the `value` property
    person.age.value = 28
}

RealmOptional支持IntFloatDoubleBool以及Int的所有大小版本(Int8Int16Int32Int64)。

更新日期:

Tweet by Realm中提到的可选整数只是针对RealmOptional的一个错误修复程序,该修复程序通过Int的大小调整版本来实现可选数值
如果你想在一个Realm对象中有可选的数值,你仍然需要使用RealmOptional。你不能像其他可选类型那样简单地使用它。
所以dynamic var reps: Int?不起作用。

yiytaume

yiytaume2#

在目标c的例子中,我们可以像这样使用optional

Optional numbers can be stored using an NSNumber * property which is tagged with the type of the number.

You can use NSNumber <RLMInt> *, NSNumber<RLMBool> *, NSNumber<RLMFloat> *, and NSNumber<RLMDouble> *.

请参考示例代码

@interface OptionalTypes : RLMObject
@property NSString *optionalString;
@property NSString *requiredString;
@property NSData *optionalData;
@property NSDate *optionalDate;
@property NSNumber<RLMInt> *optionalInt;
@property NSNumber<RLMBool> *optionalBool;
@property NSNumber<RLMFloat> *optionalFloat;
@property NSNumber<RLMDouble> *optionalDouble;
@end
@implementation OptionalTypes
+ (NSArray *)requiredProperties {
    return @[@"requiredString"];
}
@end

有关更多信息,您也可以查看此链接:https://realm.io/blog/realm-objc-swift-0-96-0/

相关问题