5

Objective-c コードの次の行を迅速に変換する必要があります。これは、フレームワークによって提供されるプロトコルが type のインスタンス変数に適用されるObjective-c JSONModel-Frameworkのサンプルです。関連する投稿を見つけましたが、達成できませんでした。私の実装では、Xcodeは不平を言いますOptionalNSStringMYModel.swiftCannot specialize non-generic type NSString

あなたの助けをthx!

MYModel.swift

@objc(MYModel) public class MYModel : JSONModel {
   ...
   public var name : NSString<Optional>
   ...
}

MYModel.h

@interface MYModel : JSONModel
...
@property (strong, nonatomic) NSString<Optional>* name; 
...

JSONModel.h

...
/**
 * Protocol for defining optional properties in a JSON Model class. Use like below to define 
 * model properties that are not required to have values in the JSON input:
 * 
 * @property (strong, nonatomic) NSString<Optional>* propertyName;
 *
 */
@protocol Optional
@end
...
4

2 に答える 2

1

<とはプロトコルに準拠するためのもので>はありません。これは、Array のようなジェネリックを持つ型用です。

Array<T>

だからあなたは書くことができますvar a: Array<String>

何か他のものが必要です。変数はタイプString であり、プロトコルに準拠する必要があります


プロトコルを使用して String を拡張し、必要な関数を自分で追加できます。

あなたのOptionalプロトコルは空なので、次のように書くだけで十分です:

extension NSString: Optional {} // you can use String if you like

Swift でプロトコル書き込みを作成するには:

protocol Optional {}

Objective-C でプロトコルを作成することもできます。


Optional は既に存在するため使用しないでください。ただし、Swift には名前空間があるため、これは機能します。もちろん、次のように書くこともできます。

extension NSString: JsonOptProtocol {}

protocol JsonOptProtocol {} // or create that in Objective-C like you did

ドキュメント リンク。

于 2014-08-26T13:35:48.947 に答える
0

Optional は Swift の標準ライブラリで宣言されている型で、現時点では JSONModel は Swift と互換性がありません。

于 2014-08-26T13:59:19.840 に答える