LoginSignup
27
26

More than 5 years have passed since last update.

NSUserDefaults/CoreDataの内容をブラウザで表示する

Last updated at Posted at 2015-06-11

デバッグする際にリアルタイムでNSUserDefaultsの内容を表示したかったので、ブラウザで見れるライブラリを作ってみました。

2015/6/22 おまけ機能で、CoreDataと永続的に存在しているオブジェクトも閲覧できるようにしました

利用例

こんな感じでブラウザからNSUserDefaultsの内容を表示できます。

example01.png

※ ChromeにJSON Formatterを入れて表示してます。

インストール

// Podfile

pod 'PSUserDefaultsMonitor', git: 'https://github.com/hmuronaka/PSUserDefaultsMonitor.git'
use_frameworks! # for swift.

使い方

start monitor

#import "yourproject-swift.h"

// AppDelegate.h
@property(nonatomic, strong) PSUserDefaultsMonitor* monitor;

// AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  monitor = [PSUserDefaultsMonitor defaultMonitor];
  [monitor startMonitorWithPort:5050]; // 5050 is http server listen port.
}

stop


[monitor stop];

ブラウザからの表示方法

URL: http://{iPhone/iPadのIPアドレス}:{HTTPサーバーのリッスンポート}/U/

※ 値がDictionaryかArrayの場合、キーを指定する事も可能です。

下図はNSUserDefaultsのNSLanguagesのみを表示した例

example03.png

注意

無線LANの環境によっては、iPhone~mac間の通信が出来ない場合があります(pingが通らない)。その場合は MacからiPhone, iPhoneからMacへとお互いにpingを発行すると接続出来るようになる場合があります。

リポジトリ

おまけ オブジェクトも見れるようにしてみました

需要があるか分からないけど、実装してみた。オブジェクトによっては再帰ループに陥りますが...

@property(nonatomic, strong) NSMutableDictionary* dict;

-(void)init {
  // 監視対象のオブジェクトを追加.
  // WeakDictionaryとして実装してあるので、PSUserDefaultsMonitorは追加したオブジェクトを弱参照します。
  [[PSUserDefaultsMonitor defaultMonitor] setObject:dict key:@"Test"];
}

-(void)foo {
  dict["TEST"] = @{@"B": @2, ...}
}

ブラウザの表示は以下のURLから
URL: http://{iPhone/iPadのIPアドレス}:{HTTPサーバーのリッスンポート}/O/

example02.png

おまけ2 CoreDataも見れます


-(void)init {
  // 現状では、myContextを強参照します。
  [[PSUserDefaultsMonitor defaultMonitor].managedObjectContext = self.myContext;
}


URL: http://{iPhone/iPadのIPアドレス}:{HTTPサーバーのリッスンポート}/C/テーブル名

example04.png

あったら便利

  • 実装済:ブラウザから特定のキーのみを表示する.
  • 実装済:NSUserDefaults以外のオブジェクトも参照できる.
  • 実装済:Json化する際の循環参照回避.
  • 実装済: CoreDataを表示
  • CoreDataを編集
  • オブジェクトのプロパティの内容を表示、編集できる
  • ブラウザから値を書き換えられる
  • iOS内のファイル操作
27
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
26