2013-07-22 21 views
9

私のiOSアプリケーションでは、データベースのユーザー情報を(Stackmobを使用して)更新しようとしていますが、 "認識できないセレクタをインスタンスに送信"事前にiOS&Stackmob - [NSNull length]:インスタンスに送信された認識できないセレクタ

-[NSNull length]: unrecognized selector sent to instance 0x1ec5678 

2013-07-21 12:01:25.773 [29207:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[NSNull length]: unrecognized selector sent to instance 0x1ec5678' 

ありがとう:

- (IBAction)save:(UIButton *)sender { 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"User"]; 
NSPredicate *predicte = [NSPredicate predicateWithFormat:@"username == %@", self.username]; 
[fetchRequest setPredicate:predicte]; 

[self.managedObjectContext executeFetchRequest:fetchRequest onSuccess:^(NSArray *results) { 

    NSManagedObject *todoObject = [results objectAtIndex:0]; 
    [todoObject setValue:@"[email protected]" forKey:@"email"]; 

    [self.managedObjectContext saveOnSuccess:^{ 
     NSLog(@"You updated the todo object!"); 
    } onFailure:^(NSError *error) { 
     NSLog(@"There was an error! %@", error); 
    }]; 

} onFailure:^(NSError *error) { 

    NSLog(@"Error fetching: %@", error); 

}]; 
} 

は、ここで私が取得しています完全な誤りです。

+1

ここでは、Nilの値またはオブジェクトを取得していて、このエラーが発生した理由をnilに設定しようとしています。それがnilかどうかでbefor setValueをチェックしてください。 –

+0

[--N [NSNull length \]:重複しているセレクタに送信された...メモリリーク?](http://stackoverflow.com/questions/16607960/nsnull-length-unrecognized-selector-sent-to- a-memory-leak) – borrrden

+0

self.usernameを印刷して、それに含まれているものを確認できますか? – satheeshwaran

答えて

42

あなたの自己のユーザー名が空である可能性があると思います。あなたはJSONからユーザ名データを取得している場合、あなたはJSONインタプリタがNSNullオブジェクトを生成しますので、空のデータを避けるために if(username){...}しかし

if(![username isKindOfClass:[NSNull class]]) 

を使用できないことに注意してください。

+2

このソリューションは動作しますが、私はここでより良いソリューションを見つけました:http://stackoverflow.com/questions/16607960/nsnull-length-unrecognized-selector-sent-to-a-memory-leak/16610117 –

+0

@特定の状況ではうまくいく可能性がありますが、生産で使用するのはかなり危険な戦略です。 – dmur

+0

しかし、これとJSONとは何が関係していますか? – user102008

関連する問題