将Facebook Places ID从iOS中的placesPicker传递到postParams以进行Feed发布

时间:2012-09-29 17:19:51

标签: objective-c ios facebook facebook-graph-api facebook-ios-sdk

这一直是我的香蕉!我正在尝试让我的应用程序向用户的Facebook提要发布消息,并在从iOS中的placesPicker选择本地地点后登录到facebook Place。

我已经完成了测试中的所有工作,这意味着当我只为NSMutableDictionary的所有postParams输入字符串值时,它就完美地发布了。例如:

self.postParams =
    [[NSMutableDictionary alloc] initWithObjectsAndKeys:
     @"I am doing XYZ", @"message",
     @"123456abc",@"tags",
     @"123456xyz,@"place",
     nil];

以上postParams在发布到Feed时效果很好,它会显示消息,然后检入“地点”ID,并表示您使用“标签”中的用户ID。问题是我真的从Facebook SDK的placePicker获得Place ID。我已经完成了拾取器设置并且工作正常,但我无法弄清楚如何用拾取的地方的id替换硬编码的@“123456xyz”。

这是我现在所拥有的:

self.postParams =
        [[NSMutableDictionary alloc] initWithObjectsAndKeys:
         @"I am doing XYZ", @"message",
         @"123456abc",@"tags",
         self.selectedPlace.id,@"place",
         nil];

self.selectedplace.id成功包含Place的id,当我在控制台中使用debug / NSLog打印它时,它正确保存该值。但是当我尝试在选择一个地方后发布这个,我得到“错误:domain = com.facebook.sdk,code = 5”

以下是self.selectedPlace的定义方式。合成:

@property (strong, nonatomic) NSObject<FBGraphPlace> *selectedPlace;

...

@synthesize selectedPlace = _selectedPlace;

...

[placePicker presentModallyFromViewController:self
                                     animated:YES
                                      handler:^(FBViewController *sender, BOOL donePressed) {
                                          if (donePressed) {
                                              self.selectedPlace = placePicker.selection;
                                          }
                                      }];

所以,总结一下我的问题:我怎样才能成功地将存储在self.selectedPlace.id中的Place ID存入postParams字典中,以便可以成功解释它&amp;发布到用户的Feed?

另外,我应该提前警告每个人......我是自学并且还在学习,虽然我可以查看代码,了解它的作用,并写出来......我担心我不是很好用术语&amp;讨论/理解一些语言...大声笑,如果你在任何答案或评论中记住这一点,它会帮助我很多:)谢谢,我期待着我的stackoverflow newb shell打破并成为这里的社区更加分散。

1 个答案:

答案 0 :(得分:0)

想出来......而不是用initWithObjectsAndKeys集体设置post params,如下所示:

self.postParams =
    [[NSMutableDictionary alloc] initWithObjectsAndKeys:
     @"I am doing XYZ", @"message",
     @"123456abc",@"tags",
     self.selectedPlace.id,@"place",
     nil];

为每个传递的参数创建单独的字典,并使用setValue将每个字典设置为最终的postParams:forKey:

[fbPostParams setValue:self.selectedPlace.id forKey:@"place"];