2012-05-29 2 views
0

iOS 앱에 Redis를 사용해야하고 라이브러리를 https://github.com/lp/ObjCHiredis에서 다운로드하고 Redis를 내 컴퓨터에 설치했습니다. 그런 다음 작은 프로그램을 만들어 작동 여부를 확인했습니다. 다음은 제가 아래에있는 출력이며 http://pastebin.com/uduB92cf에서 코드를 읽을 수 있습니다.Redis에 iOS 용 ObjCHiredis 사용

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 

답변

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; 
}