首页 文章

Facebook params问题导致应用程序终止 - iphone

提问于
浏览
0

我试图从我的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 dialog:@“feed”andParams:params andDelegate:self];

但在任何一种情况下,我的应用程序都会被终止

(FBRequest *)openUrl:(NSString *)url params:(NSMutableDictionary *)params httpMethod:(NSString *)httpMethod delegate:(id)delegate

或者在

(void)dialog:(NSString *)action andParams:(NSMutableDictionary *)params andDelegate:(id)delegate

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

*由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [__ NSCFDictionary setObject:forKey:]:发送到immutable对象的mutating方法'

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

难道我做错了什么?任何帮助将非常感激 .

1 回答

  • 2

    这对我没有意义,因为使用的词典是可变的 .

    不,他们不是 . 尽管您将返回的对象分配给 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:]:发送到immutable对象的mutating方法'

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

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

相关问题