Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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
Asp.net 无法从JSON Web服务获取值_Asp.net_Ios_Xcode_Json_Web Services - Fatal编程技术网

Asp.net 无法从JSON Web服务获取值

Asp.net 无法从JSON Web服务获取值,asp.net,ios,xcode,json,web-services,Asp.net,Ios,Xcode,Json,Web Services,我有一个Web服务,它从数据库中提取数据,并将数据以JSON格式发送到Iphone 我的网络服务: [ScriptMethod(ResponseFormat = ResponseFormat.Json)] [WebMethod] public string Person() { return Helper.Person(); } 我的助手 public class Helper { internal stati

我有一个Web服务,它从数据库中提取数据,并将数据以JSON格式发送到Iphone

我的网络服务:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
       [WebMethod]
       public string Person()
       {
           return Helper.Person();
       }
我的助手

public class Helper
{
   internal static string Person()
   {
       List<object> person = new List<object>();

       using (SqlConnection con = new SqlConnection(@"Data Source=Localhost\SQLEXPRESS;Initial Catalog=BOOK-IT-V2;Integrated Security=true;"))
       using (SqlCommand cmd = new SqlCommand(@"SELECT EMAIL FROM PERSON", con))
       {
           con.Open();
           using (SqlDataReader rdr = cmd.ExecuteReader())
           {
               while (rdr.Read())
               {
                   if (rdr["EMAIL"] != DBNull.Value)
                   {
                       raumKlassenObject.Add(new {
                           Email=rdr["EMAIL"].ToString()});
                   }
               }
           }
       }

       return new JavaScriptSerializer().Serialize(person.ToArray());
   }
}
但是如果我尝试

self.array = [[dic objectForKey:@"d"] objectForKey:@"Email"];
要仅获取值,请执行以下操作:abcd@web.de, acsb@web.de, asbd@gmx.de等等

所以我得到了一个错误:

 [__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6a4ccb0.
我认为Web服务返回了一些错误信息,但我不知道是什么。也许你能帮我


提前谢谢。

您有一组字典,每个字典中有一个单键(
“Email”

objectForKey:
是一种返回字典中键的对象的方法

无法对从
[dic objectForKey:@“d”]
接收的数组调用此方法,因为此方法不适用于数组

而是像这样使用
objectAtIndex:

self.array = [dic objectForKey:@"d"];
NSMutableArray *finalArray = [[NSMutableArray alloc] init];
for(int n=0; n<[self.array count]; n++)
    [finalArray addObject:[[self.array objectAtIndex:n] objectForKey:@"Email"]];
self.array=[dic objectForKey:@“d”];
NSMutableArray*finalArray=[[NSMutableArray alloc]init];

对于(int n=0;n而言,问题在于:

[dic objectForKey@"d"]
返回字典数组。无法使用objectForKey访问数组,就像您在此处尝试:

// the second objectForKey message is being sent to the array returned by the first objectForKey
[[dic objectForKey:@"d"] objectForKey:@"Email"];
但是,valueForKey在数组上工作,并在数组的每个元素上调用valueForKey后返回一个新数组:

NSArray *objects = [dict objectForKey:@"d"];
NSArray *emails = [objects valueForKey:@"Email"];

这将为您获取字典数组中的所有电子邮件地址。

哇,我不知道valueForKey会这么做!这一定是最好的方法。出错:由于未捕获的异常“NSUnknownKeyException”终止应用程序,原因:“[valueForUndefinedKey:]:此类不符合键名的键值编码。'post您对
数组的定义
@property(强,非原子)NSArray*数组;thx对于您的答案,我尝试了您的解决方案,但现在我收到另一个错误[\u NSCFString count]:发送到实例0x6841840的选择器无法识别。您是否将
数组
定义为字符串?否,我没有。@property(强,非原子)NSArray*数组;将其更改为可变数组,因为您正在调整它。使用
NSMutableArray
而不是
NSArray
这是您定义数组的唯一位置吗?它是否也在类定义中定义?尝试使用
(非原子,保留)
而不是
(强,非原子)
我能想到的另一件事是您的[dic objectForKey:@“d”]正在返回字符串。
// the second objectForKey message is being sent to the array returned by the first objectForKey
[[dic objectForKey:@"d"] objectForKey:@"Email"];
NSArray *objects = [dict objectForKey:@"d"];
NSArray *emails = [objects valueForKey:@"Email"];