1

現在のユーザーのデータ フィールドのバランスにアクセスしようとしています。
以下は、デバッガーで currentUser を照会するときにのみ表示されるものです。

(lldb) po currentUser
<PFUser: 0x17642d80, objectId: FUsro30ZFu, localId: (null)> {
    displayName = Turkey;
    email = "frederick.c.lee@gmail.com";
    firstName = Frederick;
    lastName = Lee;
    username = "UncleRic ";
}

これが私が取得したいフィールドです(他のものとして): ここに画像の説明を入力

これらは失敗した試みです:

(lldb) po currentUser["location"]
error: indexing expression is invalid because subscript type 'const char *' is not an Objective-C pointer
error: 1 errors parsing expression
(lldb) po currentUser.location
error: property 'location' not found on object of type 'PFUser *'
error: 1 errors parsing expression
(lldb) po currentUser.valueForKey("location")
error: property 'valueForKey' not found on object of type 'PFUser *'
error: 1 errors parsing expression

オブジェクト「PFUser」の残りのフィールドにアクセスするための正しい方法は何ですか?


また、PFUser のフィールド値を更新/割り当てるにはどうすればよいですか?
どうやら、文字列を AnyObject オブジェクトに再キャストする必要があるようです。しかし、'location' フィールドはすでに文字列フィールドとして定義されています。

ここに画像の説明を入力

4

1 に答える 1

1

ここにはいくつかの問題があります。

1) デバッガーで Objective-C の代わりに Swift を使用しようとしていました。
そのため、構文がすべて台無しになりました。

2) parse.com データをオンライン (Web 経由) で変更した後、アプリ @ デバイスを再起動 (コールド スタート) しませんでした。だから私は潜在的な(更新されていないデータ)を探していました。

以下は、PFUser 属性値を確認するための正しい形式です。

(lldb) po [currentUser objectForKey:@"firstName"]
Frederick

(lldb) po [currentUser objectForKey:@"location"]
Ann Arbor

PFUser オブジェクトを更新するための正しい Swift 構文は次のとおりです。 注: 実際の SAVE() は必ずバックエンド スレッドで実行してください。

コード ユーザーは基本的に、実際にファイルを更新できるという概念実証です。

func updateParseUser(newUser:User, sender:UIViewController) {

    let currentUser = PFUser.currentUser()

    if ((currentUser) == nil) {
        return
    }

    if let revisedlocation = newUser.location {
        currentUser?.setValue(revisedlocation, forKey: "location")
    }

    if let phone = newUser.phoneNumber {
        currentUser?.setValue(phone, forKey: "phone")
    }

    currentUser!.save()

}

フィードバックをお寄せいただきありがとうございます

于 2015-04-26T20:14:45.540 に答える