0

新しいプロジェクトで Parse SDK for iOS を使用しようとしています。enum プロパティを持つ viewController があります。

typedef enum {
    PFLogInFieldsNone = 0,
    PFLogInFieldsUsernameAndPassword = 1 << 0,
    PFLogInFieldsPasswordForgotten = 1 << 1,
    PFLogInFieldsLogInButton = 1 << 2,
    PFLogInFieldsFacebook = 1 << 3,
    PFLogInFieldsTwitter = 1 << 4,
    PFLogInFieldsSignUpButton = 1 << 5,
    PFLogInFieldsDismissButton = 1 << 6,

    PFLogInFieldsDefault = PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton |      PFLogInFieldsSignUpButton | PFLogInFieldsPasswordForgotten | PFLogInFieldsDismissButton
 } PFLogInFields;

Objective-C のチュートリアルによると、次のように設定する必要があります。

 [logInViewController setFields: PFLogInFieldsTwitter | PFLogInFieldsFacebook | PFLogInFieldsDismissButton];

私はこの方法でそれをやろうとしています(swiftを使用):

loginViewController.fields = PFLogInFieldsTwitter | PFLogInFieldsFacebook | PFLogInFieldsDismissButton

しかし、「'PFLogInFields' は 'Bool' に変換できません」というエラーが表示されます。

では、そのような種類のプロパティを設定する正しい方法は何ですか?

4

3 に答える 3

2

Objective-C の連続した列挙型は を使用するようにリファクタリングする必要がNS_ENUMあり、ビットフィールドの列挙型は を使用するようにリファクタリングする必要がありますNS_OPTIONS

あなたは変わるべきです

typedef enum {
    //...
} PFLogInFields;

typedef NS_OPTIONS(NSInteger, PFLogInFields) {
    //...
};
于 2014-08-25T20:26:11.410 に答える
1

私はあなたと同じ問題を抱えていました。Swiftで設定する方法については、この回答を参照してください。PFLogInFieldsそれは私のために働いた!!

于 2014-08-26T06:49:47.520 に答える
0

Swift では、列挙型の前に Type を付ける必要があります。これが Objective-C のインポートで自動的に機能するかどうかはわかりませんが、次の可能性があります。

logInViewController.fields = PFLogInFields.PFLogInFieldsTwitter | ...

ライブラリがSwift標準に移植された場合、フィールドはすでに期待PFLoginFieldsされており、列挙項目は次のように定義されています。

logInViewController.fields = .Twitter | .Facebook ...
于 2014-08-25T10:21:11.100 に答える