0
私は、目的関数cからbridgingを使ってswift関数を呼び出しています。また、キーと値のペアを持つNSMutableDictionaryを渡します。 1つの値(op_status)は、呼び出し側でそのままではあるが、受信時にnullになります。アタッチコード:Objective CからSwift関数を呼び出している間、辞書がキャストされていない
NSMutableDictionary *offlineRequestData = [NSMutableDictionary dictionaryWithObjectsAndKeys:
soId, @"soId",
AddNoteScreen, @"screen",
NotesOperation, @"operation",
jsonBlob, @"jsonBlob",
createdDate, @"created_datetime",
[NSNumber numberWithInt:OperationNotSynced], @"op_status",
@"", @"sync_datetime", nil];
// OperationNotSyncedは列挙型です。辞書
newRecord.op_status = valuesDictionary["op_status"] as? NSNumber
op_statusがここにnullを取得します使用しています //内部スウィフト機能:スウィフト側
// -
。
また、valuesDictionary ["op_status"]を出力すると、オプションの(int値)が返され、アンラッピングによって値が出力されます。しかし、NSNumberにキャストできません。
何か助けていただければ幸いです。
op_statusはNSNumberである必要がありますか? Intではなく?右 ?私はこれをやっているのですか?: [NSNumber numberWithInt:OperationNotSynced]。 – ofeida
Swiftは自動的にそれをあなたのために 'Int'にキャストします。 Swiftは、NSNumberのような旧式のObjective-C型より新しいFoundation型を使用することを望みます。残念ながら、CoreDataのようなものはまだNSNumberに依存しています。 Swiftコンパイラ/タイプシステムでこれらのゲームをプレイしなければならないことがあります。 – keithbhunter
試してみましたが、valuesDictionary ["op_status"]がIntにキャストされていませんか?また、それを印刷するとオプション(1)(または他の値)が表示されます。 – ofeida