Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iOS:从valueForKeyPath获取值_Objective C_Ios_Xcode_Ios5 - Fatal编程技术网

Objective c iOS:从valueForKeyPath获取值

Objective c iOS:从valueForKeyPath获取值,objective-c,ios,xcode,ios5,Objective C,Ios,Xcode,Ios5,我正在使用IBAForms为我的项目创建一个简单的表单,除了从de字段获取值之外,我几乎实现了所有功能。我有以下代码: NSLog(@"SUBMIT"); id values = [[self formDataSource] modelValueForKeyPath:@"diabetePickListItem"]; for (id key in values){ id values = [values objectForKey:key]; NSString *keySt

我正在使用IBAForms为我的项目创建一个简单的表单,除了从de字段获取值之外,我几乎实现了所有功能。我有以下代码:

    NSLog(@"SUBMIT");
id values = [[self formDataSource] modelValueForKeyPath:@"diabetePickListItem"];
for (id key in values){
    id values = [values objectForKey:key];

    NSString *keyString = (NSString *)key;
    NSLog(@"%@",keyString);
    NSString *valueString = (NSString *)values;
    NSLog(@"%@",valueString);
}

NSLog(@"diabetes %@", values);
它在控制台中给了我这个输出:

2012-10-07 07:02:37.145 BigBlueTest[64483:10403] SUBMIT
2012-10-07 07:02:37.147 BigBlueTest[64483:10403] Yes
2012-10-07 07:02:37.148 BigBlueTest[64483:10403] (null)
2012-10-07 07:02:37.150 BigBlueTest[64483:10403] diabetes {(
Yes
)}
我不明白的是如何从modelValueForKeyPath方法返回的值中获取键。我只想在不进行快速枚举的情况下获得“Yes”或“No”值。我真的不知道我在这段代码中遗漏了什么。任何帮助都将不胜感激。提前谢谢

编辑:

问题是,当我尝试使用objectAtIndex时,它会给我-[\uu NSCFSet objectAtIndex:]:发送到实例的无法识别的选择器错误。我正在处理的应用程序包含一个表单,用于收集简单信息,如果我完整填写表单并打印我得到的输出值的内容:

NSLog(@"%@",_formValues);

2012-10-08 11:27:48.524 BigBlueTest[17285:10403] {
    activityPickListItem = "{(\n    Running/jogging\n)}";
    bloodAfter = 60;
    bloodBefore = 58;
    diabetePickListItem = "{(\n    Yes\n)}";
    durationPickListItem = "{(\n    10 or less\n)}";
    intensityPickListItem = "{(\n    Moderate\n)}";
    lowGlucoseSyntom = "{(\n    No\n)}";
    pickInsulinUse = "{(\n    Yes\n)}";
    pickMeasureUnit = "{(\n    mmol/L\n)}";
    recentMealPickListItem = "{(\n    30 minutes ago\n)}";
}

如果我使用valueForKeypath,那么我将获得以下格式的值{(value)}。我还没有想出一个方法来获取字符串值。尝试NSDictionary和NSArray中的方法失败。感谢您的回复。

我不是目标C方面的老手,但值不应该是数组吗?这个问题似乎与typecast语句“
(NSString*)values
”有关,它看起来非常罕见,而且有点错误。我认为应该使用不同的方法转换
NSString
中的值,因为它似乎返回
NULL
。也许你可以试试像这样的东西
NSString*valueString=[NSString-stringWithString:[values-objectAtIndex:yourIndex]
(或使用
NSRange
查看更多对象)

我不熟悉IBAForms,但看起来values为您提供了一个集合。我建议您在line id值之后设置一个断点…并查看返回到值中的内容。有时上下文相关的工具提示在XCode中不起作用。在这种情况下,您可以在debug windo中键入
po values
w、 这会让您更好地了解您正在处理的问题。

谢谢,您的回答在查找有关正在发生的事情的信息方面帮了我很大的忙。但是,我还没有设法只获取值。我很困惑,在这里找不到只获取de值的方法:{(值)}。objectAtIndex不起作用。值是id类型。请尝试以下操作:BOOL-answer=[[值对象索引:0]布尔值]];