次のコードを使用して、LBUser のユーザー拡張機能を作成してサーバーに保存しようとしています。
LBRESTAdapter *adapter = ((AppDelegate *)[[UIApplication sharedApplication] delegate]).adapter;
if (adapter) {
TeacherRepository *repo = (TeacherRepository *)[adapter repositoryWithClass:[TeacherRepository class]];
if (repo) {
Teacher *st = (Teacher *)[repo createUserWithEmail:@"test@test.com" password:@"test"];
st.bigarea = @"Mathematics";
NSLog(@"Email: %@", st.email);
NSLog(@"Password: %@", st.password);
if (st) {
[st saveWithSuccess:^{
NSLog(@"Saved in server!");
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
}
}
}
TeacherRepository は LBUserRepository 拡張機能です。どうやらユーザーの作成は問題ありませんが、ユーザーを保存しようとすると、次のエラーが発生します。
Error Domain=AFNetworkingErrorDomain Code=-1011 "Expected status code in (200-299), got 422" UserInfo=0x7f9418f07db0 {NSLocalizedRecoverySuggestion={"error":{"name":"ValidationError","status":422,"message":"The `Teacher` instance is not valid. Details: `password` can't be blank; `email` can't be blank; `email` is blank.","statusCode":422,"details":{"context":"Teacher","codes":{"password":["presence"],"email":["presence","format.blank"]},"messages":{"password":["can't be blank"],"email":["can't be blank","is blank"]}},"stack":"ValidationError: The `Teacher` instance is not valid. Details: `password` can't be blank; `email` can't be blank; `email` is blank.
Teacher という名前の LBUser 拡張機能が有効ではなく、電子メールとパスワードが空白のようですが、NSLog によると空白ではありません。Teacher.h は次のとおりです。
#import <Foundation/Foundation.h>
#import <LoopBack/LoopBack.h>
@interface Teacher : LBUser
@property (strong,nonatomic) NSString *bigarea;
@end
サーバーに戻ると、教師を次のように記述する .json があります。
{
"name": "Teacher",
"plural": "Teachers",
"base": "User",
"properties": {
"bigarea": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {
"courses": {
"type": "hasMany",
"model": "Course",
"foreignKey": "courseId"
}
},
"acls": [],
"methods": []
}
また、Objective C で関係を表す方法について少し混乱しています。誰か教えてもらえますか?