0

iOS アプリに Redis を使用する必要があり、https://github.com/lp/ObjCHiredisからライブラリをダウンロードし、コンピューターに Redis をインストールしました。次に、小さなプログラムを作成して、それが機能するかどうかを確認しました。これは私が下に得ている出力であり、http://pastebin.com/uduB92cfでコードを読むことができます。

2012-05-29 10:32:34.186 RedisVideo[19023:707] loaded
2012-05-29 10:32:34.262 RedisVideo[19023:707] redis created
2012-05-29 10:32:34.276 RedisVideo[19023:707] __NSCFString
2012-05-29 10:32:34.277 RedisVideo[19023:707] subscribe
2012-05-29 10:32:34.280 RedisVideo[19023:707] __NSCFString
2012-05-29 10:32:34.281 RedisVideo[19023:707] CHANNELZ
2012-05-29 10:32:34.283 RedisVideo[19023:707] __NSCFNumber
2012-05-29 10:32:34.284 RedisVideo[19023:707] 1
2012-05-29 10:32:34.290 RedisVideo[19023:707] command sent
2012-05-29 10:32:34.291 RedisVideo[19023:707] ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context
2012-05-29 10:32:34.320 RedisVideo[19023:707] command sent
2012-05-29 10:32:34.321 RedisVideo[19023:707] there was a response
2012-05-29 10:32:34.323 RedisVideo[19023:707] ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context
2012-05-29 10:32:34.325 RedisVideo[19023:707] command time over
4

1 に答える 1

0

怠惰な実体化メソッドでチャネルをサブスクライブするための呼び出しを削除する必要がありました。

-(ObjCHiredis*) redis
{
    if(!redis)
    {
        redis = [ObjCHiredis redis:@"10.0.0.5" on:[NSNumber numberWithInt:6379] db:[NSNumber numberWithInt:0]];
        NSLog(@"redis created");
//        [redis command:@"SUBSCRIBE CHANNELZ"];
//        id retVal =  [redis command:@"SUBSCRIBE CHANNELZ"];
//        if( [retVal isKindOfClass:[NSString class]] )
//        {
//            NSLog(@"%@",(NSString*)retVal);
//        }
//        else if( [retVal isKindOfClass:[NSArray class]] )
//        {
//            for (id foo in retVal)
//            {
//                NSLog(@"%@",[foo class]);
//                if( [foo isKindOfClass:[NSString class]] )
//                {
//                    NSLog(@"%@",(NSString*)foo);
//                }
//                else if( [foo isKindOfClass:[NSNumber class]] )
//                {
//                    NSLog(@"%d",[(NSNumber*) foo intValue]);
//                }
//            }
//        }
    }
    return redis;
}
于 2012-05-29T07:52:03.573 に答える