1

这一直让我发疯!我试图让我的应用程序向用户的 facebook 提要发布消息,并在从 iOS 中的 placesPicker 选择本地位置后签入到 facebook Place。

我几乎已经完成了测试中的所有工作,这意味着当我为 NSMutableDictionary 的所有 postParams 手动键入字符串值时,它会完美发布。前任:

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

上面的 postParams 在发布到提要时完美运行,它显示消息,然后签入“地点”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 打印它时,它准确地保存了该值。但是当我在选择一个地方后尝试发布它时,我得到“错误:域 = com.facebook.sdk,代码 = 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 字典中,以便它可以被成功解释并发布到用户的提要中?

另外,我应该提前警告大家......我是自学成才,仍在学习,虽然我可以查看代码,理解它的作用并编写它......恐怕我对术语不太了解& 讨论/理解一些语言...大声笑,所以如果您在任何答案或评论中牢记这一点,这将对我有很大帮助:) 谢谢,我期待着打破我的 stackoverflow newb shell 和在这里变得更加远离社区。

4

1 回答 1

0

想通了...而不是使用 initWithObjectsAndKeys 一起设置帖子参数,如下所示:

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

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

[fbPostParams setValue:self.selectedPlace.id forKey:@"place"];
于 2012-10-20T04:35:12.337 回答