将字符串拆分为数组

时间:2014-04-04 16:17:02

标签: objective-c ios7

相当新的Objective-C试图了解我如何分割我拥有的字符串。我实际上认为我已经拆分了字符串,现在我只想测试它,所以我试图将它设置为textview,得到一个"不兼容的指针类型"警告。我确实在线阅读了一些内容,但是它们与我在课堂上看到的并不匹配,我的教授告诉我们iOS一直在变化,而我可能找到的一些解决方案可能不再适用了。这就是为什么我要来SO,我确实尝试自己找到这些信息,但是所有的SO链接都已经超过2年了,所以我想要安全并重新向使用iOS 7 +的人提出这个问题。

- (IBAction)GetCourse:(id)sender
{
    __block NSString * jstring = nil;
    __block NSArray * jarray = nil;

    dispatch_queue_t progressQueue = dispatch_queue_create("JSON.GetJSONString", NULL);
    dispatch_async(progressQueue, ^{
            jstring = [JSONHelper JSONgetString:@"http://iam.colum.edu/portfolio/api/course?json=True"];
        dispatch_async(dispatch_get_main_queue(), ^{
            //main thread code
            //textView.text = jstring;
            jarray = [jstring componentsSeparatedByString:@" "];
            textView.text = jarray;
            NSError *error = nil;
            NSDictionary *results = [NSJSONSerialization JSONObjectWithData: [jstring dataUsingEncoding:NSUTF8StringEncoding]
                                                                    options: NSJSONReadingMutableContainers
                                                                      error: &error];
            if (error) NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), error.localizedDescription);
        });
    });

1 个答案:

答案 0 :(得分:2)

您的问题是textView.text属于NSString类型的属性,而jarray属于NSArray。请尝试将第一个课程名称字符串放在文本视图中:

textView.text = [jarray objectAtIndex:0];

然后尝试这样的方法将整批课程附加到文本视图中:

NSString * fullString = [NSString string];
for(int i = 0; i < jarray.count; i++)
{
    fullString = [fullString stringByAppendingString:[jarray objectAtIndex:i]];
}
textView.text = fullString;

更新:在查看JSON响应后,您可能希望拆分您获得的字符串,因为有更简单的方法来获取数据。您想要从JSON响应中序列化NSArray NSStrings。您的代码正在尝试将其序列化为NSDictionary,因为响应(我看到它)是一个字符串数组,而不是值字典。在块的底部试试这个:

NSError *error = nil;
NSArray * resultArray = [NSJSONSerialization JSONObjectWithData: [jstring dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers                                                                      error: &error];

if ( !resultArray ) {
    NSLog(@"Error parsing JSON: %@", e);
} else {
   for(NSString * course in resultArray) {
      NSLog(@"Course: %@", course);
   }
}