程序中意外的'@'

时间:2012-03-28 11:04:39

标签: ios facebook ios5

我是iOS开发的新手,所以我不知道这样的错误,代码如下:

- (void)postToWall {

    FBStreamDialog *dialog = [[[FBStreamDialog alloc] init]
                              autorelease];
    dialog.userMessagePrompt = @"Enter your message:";
     dialog.attachment = [NSString
                         stringWithFormat:@"{\"name\":\"Facebook Connect for
                         iPhone\",\"href\":\"http://developers.facebook.com/
                         connect.phptab=iphone\",\"caption\":\"Caption\",
                         \"description\":\"Description\",\"media\":[{\"type\":
                         \"image\",\"src\":\"http://img40.yfrog.com/img40/
                      5914/iphoneconnectbtn.jpg\",\"href\":
                         \"http://developers.facebook.com/connect.php?
                         tab=iphone/\"}],\"properties\":{\"another link\":
                         {\"text\":\"Facebook home page\",\"href\":
                             \"http://www.facebook.com\"}}}"];
                         [dialog show];

   }

我正在尝试从关于facebook connect的在线教程中学习,所以我在代码中得到了这个错误,文件包括:

导入“FBSession.h” 导入“FBLoginButton.h”

你认为这可能导致问题吗?

3 个答案:

答案 0 :(得分:3)

将字符串写入一行,或将"添加到每行的结尾和开头:

dialog.attachment = [NSString
               stringWithFormat:@"{\"name\":\"Facebook Connect for"
               "iPhone\",\"href\":\"http://developers.facebook.com/"
               "connect.phptab=iphone\",\"caption\":\"Caption\","
               "\"description\":\"Description\",\"media\":[{\"type\":"
               "\"image\",\"src\":\"http://img40.yfrog.com/img40/"
               "5914/iphoneconnectbtn.jpg\",\"href\":"
               "\"http://developers.facebook.com/connect.php?"
               "tab=iphone/\"}],\"properties\":{\"another link\":"
               "{\"text\":\"Facebook home page\",\"href\":"
                   "\"http://www.facebook.com\"}}}"];

另请注意,在这种情况下,您不需要使用stringWithFormat,您可以像这样创建字符串:

dialog.attachment = @"{\"name\":\"Facebook Connect for"
           "iPhone\",\"href\":\"http://developers.facebook.com/"
           "connect.phptab=iphone\",\"caption\":\"Caption\","
           "\"description\":\"Description\",\"media\":[{\"type\":"
           "\"image\",\"src\":\"http://img40.yfrog.com/img40/"
           "5914/iphoneconnectbtn.jpg\",\"href\":"
           "\"http://developers.facebook.com/connect.php?"
           "tab=iphone/\"}],\"properties\":{\"another link\":"
           "{\"text\":\"Facebook home page\",\"href\":"
           "\"http://www.facebook.com\"}}}";

答案 1 :(得分:2)

您发布的代码中唯一明显错误的是长字符串中间的所有换行符。此外,没有必要使用stringWithFormat。你的第一个'href'也错过了'?'来自GET查询。所以试试看看会发生什么:

dialog.attachment = @"{\"name\":\"Facebook Connect for iPhone\",\"href\":\"http://developers.facebook.com/connect.php?tab=iphone\",\"caption\":\"Caption\",\"description\":\"Description\",\"media\":[{\"type\":\"image\",\"src\":\"http://img40.yfrog.com/img40/5914/iphoneconnectbtn.jpg\",\"href\":\"http://developers.facebook.com/connect.php?tab=iphone/\"}],\"properties\":{\"another link\":{\"text\":\"Facebook home page\",\"href\":\"http://www.facebook.com\"}}}";

或者更好的是,将所有键和值分解到自己的NSString中,然后使用stringWithFormat将长字符串重新组合在一起。甚至更好,在内存中创建整个内容并使用NSJSONSerialization来创建您的JSON字符串。它会更清洁,更不容易出错。

答案 2 :(得分:-1)

我可能错了,但我认为facebook除了每个键的价值字典外。

示例代码非常好并且有很好的文档记录。

尝试在字符串的开头和结尾之间替换“with”。