サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >SDKガイド(iOS):サブクラス

SDKガイド(iOS)

ドキュメント内検索

サブクラス

このドキュメントは更新されていません。
こちらから最新版をご覧ください。

サブクラスとは

サブクラスとは、SDKで用意したNCMBObjectなどを継承して
独自のクラスを用意することができるものです。

サブクラスを利用すると、オブジェクト操作をより簡単に記述することができ、
一度定義したサブクラスを再利用しやすくなります。

通常のオブジェクトとサブクラスの違い

通常のオブジェクトを操作する場合は、以下のような記述になります。

// 通常のオブジェクトを利用した場合
NCMBObject *post = [NCMBObject objectWithClassName:@"Post"];
[post setObject:@"NCMB" forKey:@"author"];
[post setObject:@"NIFTY Cloud mobile backend" forKey:@"title"];
[post setObject:[NSNumber numberWithBool:NO] forKey:@"publication"];
[post setObject:[NSNumber numberWithInt:5] forKey:@"comments"];
[post saveInBackgroundWithBlock:nil];

サブクラスを利用した場合は、以下のような記述になります。

// サブクラスを利用した場合
Post *post = [Post object];
post.author = @"NCMB";
post.title = @"NIFTY Cloud mobile backend";
post.publication = @NO;
post.comments = @5;
[post save:nil];

サブクラスの定義

サブクラスの定義はヘッダファイル(.h)と実装ファイル(.m)で行います。
プロパティやメソッドも同時に定義します。任意のメソッドを追加しても構いません。

// Post.h
#import <NCMB/NCMB.h>

@interface Post : NCMBObject<NCMBSubclassing>

@property (strong) NSString *author;
@property (strong) NSString *title;
@property (strong) NSNumber *publication;
@property (strong) NSNumber *comments;

+ (NSString *)ncmbClassName;
- (BOOL)isPublished;

@end

// Post.m
#import "Post.h"
#import <NCMB/NCMBObject+Subclass.h>

@implementation Post

@dynamic author;
@dynamic title;
@dynamic publication;
@dynamic comments;

+ (NSString *)ncmbClassName {
    return @"Post";
}

- (BOOL)isPublished {
    if ([self.publication isEqual:@YES]) {
        return true;
    } else {
        return false;
    }
}

@end

作成したサブクラスはSDKの初期化メソッド([NCMB setApplicationKey:clientKey:])より前に
registerSubclassメソッドで登録する必要があります。

// AppDelegate.m
#import "AppDelegate.h"
#import <NCMB/NCMB.h>

#import "Post.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // 必ず初期化より前で登録する
    [Post registerSubclass];

    [NCMB setApplicationKey:@"YOUR_APP_KEY"
                  clientKey:@"YOUR_CLIENT_KEY"];

    [self.window makeKeyAndVisible];

    return YES;
}

@end

サブクラスのインスタンスは以下のように生成します。

[Post object];

サブクラスの検索

以下のようにサブクラスを検索することができます。

NCMBQuery *query = [Post query];
[query whereKey:@"comments" lessThanOrEqualTo:@10];
[query findObjectsInBackgroundWithBlock:^(NSArray *posts, NSError *error) {
    if (!error) {
        for (Post *post in posts) {
            NSLog(@"タイトル: %@, 公開: %@", post.title, [post isPublished] ? @"YES" : @"NO");
        }
    } else {
        NSLog(@"検索に失敗: %@", error);
    }
}];

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ