【问题标题】:Problem with Facebook params causing app to terminate - iphoneFacebook 参数问题导致应用程序终止 - iphone
【发布时间】:2023-03-15 05:32:01
【问题描述】:

我试图从我的 iPhone 应用程序发布到 Facebook,但它不起作用。

这就是我正在做的:

if (![_facebook isSessionValid])
    {
        NSArray *permissions =  [NSArray arrayWithObjects:
                                 @"read_stream", @"publish_stream", @"offline_access",nil];

        [facebook authorize:permissions delegate:self];
    }

    NSMutableDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"User Prompt Message",  @"user_message_prompt",
                            @"http://www.mywebsite.com/", @"link",
                            @"http://mywebsite.com/wp-content/uploads/2011/05/iTunesArtwork.png", @"picture",
                            nil];


    [facebook requestWithGraphPath:@"me/feed"
                         andParams:params  
                     andHttpMethod:@"POST" 
                       andDelegate:self];

我也试过了

[self.facebook 对话:@"feed" andParams:params andDelegate:self];

但在任何一种情况下,我的应用都会在

中终止
  • (FBRequest*)openUrl:(NSString *)url 参数:(NSMutableDictionary *)参数 httpMethod:(NSString *)httpMethod 委托:(id)委托

或在

  • (void)dialog:(NSString *)action andParams:(NSMutableDictionary *)params andDelegate:(id )委托

取决于我使用此日志调用的方法:

* 由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'-[__NSCFDictionary setObject:forKey:]: 变异方法发送到不可变对象'

这对我来说没有意义,因为所使用的字典是可变的。

我做错了吗?任何帮助将不胜感激。

【问题讨论】:

    标签: iphone facebook facebook-graph-api nsmutabledictionary


    【解决方案1】:

    这对我来说没有意义,因为所使用的字典是可变的。

    不,他们不是。尽管您将返回的对象分配给 NSMutableDictionary 变量,但您在此处创建了 NSDictionary

    NSMutableDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
                                        ^
                                      Here!
                                  @"User Prompt Message",  @"user_message_prompt",
                                  @"http://www.mywebsite.com/", @"link",
                                  @"http://mywebsite.com/wp-content/uploads/2011/05/iTunesArtwork.png", @"picture",
                                  nil];
    

    这应该是:

    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:...];
    

    这可能是崩溃的原因:

    • 由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'-[__NSCFDictionary setObject:forKey:]: 变异方法发送到不可变对象'

    因为 Facebook API 需要一个可变字典:

    - (FBRequest*)requestWithGraphPath:(NSString *)graphPath
                             andParams:(NSMutableDictionary *)params
                                                ^
                                     It needs to be mutable!
                         andHttpMethod:(NSString *)httpMethod
                           andDelegate:(id <FBRequestDelegate>)delegate;
    

    【讨论】:

    • 好吧,呃...我应该看到...我认为这是我的“复制/粘贴并假设它会起作用”的愚蠢情况。谢谢
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多