0

我正在尝试从我的网络摄像机收集参数并将它们传递到 Objective-C(iOS 应用程序)中的单个字符串中。当我在任何网络浏览器中输入以下 URL 时:[http://192.168.1.10:92/get_camera_params.cgi] 屏幕上会显示以下内容:

变量分辨率=32;
变量亮度=136;
变量对比=4;
变种模式=2;
变量翻转=3;
变量 fps=0;

我想收集这些值并将其传递到我自己的字符串中,例如:

我的分辨率 = 32;
我的亮度 = 136;
.....................

我的猜测是,我需要以某种方式将 URL 的响应转换为字符串,并以某种方式将该字符串分解为字符串数组或 6 个字符串,并收集“=”和“;”之间的数据 在单个字符串中?

即使实际值是 Int 值,这些值也必须存储在单独的字符串中,以便进一步兼容代码。

尽管看起来很简单,但我不知道如何解决这个问题,我做得很好,但没有推进任何值得在论坛上发布的内容。

请帮忙举个例子。我真的很感激。

4

1 回答 1

1

如果响应不是 html,则以下内容应该有效:

    NSMutableDictionary* dict = [NSMutableDictionary dictionary];
    NSCharacterSet* charSetToReplace = [NSCharacterSet characterSetWithCharactersInString:@";\r"];

    // get content from url
    NSString* urlContent = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://192.168.1.10:92/get_camera_params.cgi"] encoding:NSUTF8StringEncoding error:nil];

    // split content into rows
    NSArray* lines = [urlContent componentsSeparatedByString:@"\n"];

    for(NSString* line in lines)
    {
        //split row
        NSArray* comps = [line componentsSeparatedByString:@"="];

        if(comps.count < 2)
           continue;


        // [comp objectAtIndex:0] is the value left of =
        // [comp objectAtIndex:1] is the value right of =

        // left string without the 'var '
        NSString* varName = [[comps objectAtIndex:0] stringByReplacingOccurrencesOfString:@"var " withString:@""];

        // right string with trimming the ';'
        int varValue = [[[comps objectAtIndex:1] stringByTrimmingCharactersInSet:charSetToReplace] intValue];

        // write into dictionary
        [dict setObject:[NSString stringWithFormat:@"%d",varValue] forKey:varName];
    }

    // as int
    int myResolution = [[dict objectForKey:@"resolution"] intValue];
    int myBrightness = [[dict objectForKey:@"brightness"] intValue];

    // or as String
    NSString* myResolutionStr = [dict objectForKey:@"resolution"];
    NSString* myBrightnessStr = [dict objectForKey:@"brightness"];

    // and so on ...
于 2013-08-06T09:26:14.607 回答