Ich versuche ein NSNumber-Objekt zu erstellen. Ich habe diese Codes in objc:Swift 3 Erstellen eines NSNumber-Objekts
@property (nonatomic, assign) Enum someEnum;
static NSString *const value_type = @"type";
- (id)initWithDictionary:(NSDictionary *)dict andUID:(int)uid {
self.someEnum = [[dict objectForKey:value_type] integerValue];
}
- (NSDictionary *)serializeToDictionary {
dict[value_type] = [NSNumber numberWithInteger:self.someEnum];
}
Wie dieser Code würde in schnellen 3 gleichwertig sein? Ich fand, dass in swift NSNumber init (Wert:) Symbol, aber es nur ein Objekt initialisieren, nicht erstellen und initialisieren. Und das init (value:) gibt einen Fehler aus, der darauf hinweist, "value" in "coder" zu ändern. Mein Swift Code:
var someEnum = Enum.self
let value_type: NSString = "type"
init(dictionary dict: NSDictionary, andUID uid: Int) {
self.someEnum = dict.object(forKey: value_type) as! Enum.Type
}
func serializeToDictionary() -> NSDictionary {
dict[value_type] = NSNumber.init(value: self.someEnum)
}
Objective-C-Header-Datei:
typedef enum {
EnumDefault = 0,
EnumSecond = 1
} Enum;
static NSString *const value_type = @"type";
@property (nonatomic, assign) Enum someEnum;
Objective C Implementierungsdatei:
- (id)initWithDictionary:(NSDictionary *)dict andUID:(int)uid {
if(self = [super init]) {
self.someEnum = [[dict objectForKey:value_type] integerValue];
}
return self
}
- (NSDictionary *)serializeToDictionary {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[value_type] = [NSNumber numberWithInteger:self.someEnum];
return dict;
}
Meine Enum ist Int-Typ. Ich habe versucht, Ihren Code, aber es heißt - Kann nicht konvertieren Wert des Typs "Class.Enum.RawValue.Type (aka Int.Type) zu NSNumber in Notzustand geben –
@KasparsLapins Haben Sie den" ersten Fehler "Kommentar in der Spitze? – Sulthan
Project kompiliert mit diesem Code, aber tut es das gleiche? Dict [value_type] = self.someEnum.rawValue() as NSNumber –