Skip to content
This repository has been archived by the owner on Apr 1, 2024. It is now read-only.

NCMBUserのcurrentが上書かれる #116

Closed
DaichiSaito opened this issue Apr 26, 2017 · 0 comments
Closed

NCMBUserのcurrentが上書かれる #116

DaichiSaito opened this issue Apr 26, 2017 · 0 comments
Assignees

Comments

@DaichiSaito
Copy link

  • SDKのバージョン(SDK version)
    iOS Ver 2.3.4

  • 不具合が発生した環境(Environment requirement)
    XCode 8.3

【事象】
現在のログインユーザをユーザAとします。
ユーザAがユーザBのuserレコードに対して更新をかけると、NCMBUser.current()で取得できるオブジェクトがユーザBのもので書き換えられてしまいます。なのでそれ以降NCMBUser.current()を利用すると、ユーザーBのユーザ情報を取得してしまいます。

具体例

(省略・・・)
print(NCMBUser.current()) // -> ユーザAの情報が出力される
userB.incrementKey("LIKE", byAmount: 1) // ユーザBのLIKE情報を1インクリメント
userB.saveInBackground { (error) in // userB
    print(NCMBUser.current()) // -> ユーザBの情報に書き換わる
}

ソースを追ってみたところ、NCMBUserのsaveInBackgroundを呼ぶと以下メソッドも呼ばれ、その中でcurrentUserが上書かれるようです。

NCMBUser.m
/**
 ログインユーザーをファイルに保存する
 @param NCMBUSer型ファイルに保存するユーザー
 */
+ (void) saveToFileCurrentUser:(NCMBUser *)user {
    NSError *e = nil;
    NSMutableDictionary *dic = [user toJSONObjectForDataFile];
    NSData *json = [NSJSONSerialization dataWithJSONObject:dic options:kNilOptions error:&e];
    NSString *strSaveData = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
    [strSaveData writeToFile:DATA_CURRENTUSER_PATH atomically:YES encoding:NSUTF8StringEncoding error:&e];
    currentUser = user;
}
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants