Запись URL-адреса в поле для встраивания с помощью PodioKit

Я надеюсь найти помощь в более глубоком погружении в Podiokit, ObjC-API для Podio. Я пытаюсь установить значение поля ссылки на URL-адрес. Моя первая простая попытка выглядела так:

NSDictionary *embedAttributes = [NSDictionary dictionaryWithObject: @"http://www.google.com" forKey: @"url"];            
PKTEmbed *embed = [[PKTEmbed alloc] initWithDictionary: embedAttributes];
item[@"linkfield"] = embed;

Я нашел пример с использованием PHP, но не смог преобразовать его в Objective-C:

$attributes = array( 'url' => 'http://www.infranet.com' );
$embed = PodioEmbed::create( $attributes );
$attribute['embed']['embed\_id'] = $embed->embed\_id;
$attribute['file']['file\_id'] = $embed->files[0]->file\_id;
$this->orgItem->field('organizationlink')->set\_value($attribute);

Может кто-то знает, как это сделать правильно, было бы хорошо :-)

[Изменить] Руководство PodioKit просто говорит:

PKTEmbed *link = ...;
item[@"link"] = link;

[Редактировать 2] Ошибка возникает, когда я пытаюсь сохранить элемент. В журнале говорится:

Error: Saving file Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: Ungültige Anforderung (400)" UserInfo=0x600000c7ee80 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x6000008358e0> { URL: https://api.podio.com/item/app/_xxxx_/ } { status code: 400, headers {
"Content-Length" = 263;
"Content-Type" = "application/json; charset=utf-8";
Date = "Sat, 27 Sep 2014 19:16:22 GMT";
Server = nginx;
"X-Podio-Request-Id" = yqyl6yku;
"X-Rate-Limit-Limit" = 250;
"X-Rate-Limit-Remaining" = 248;
} }, NSLocalizedDescription=Request failed: Ungültige Anforderung (400), NSErrorFailingURLKey=https://api.podio.com/item/app/_xxxx_/}

Спасибо, Майкл / Гамбург


person ShooTerKo    schedule 27.09.2014    source источник
comment
эммм... какие ошибки вы получаете? Где и что вы определяете как item? эти вещи помогут.   -  person Craig    schedule 28.09.2014
comment
Элемент определен ранее: PKTItem *item = [PKTItem itemForAppWithID:appId];   -  person ShooTerKo    schedule 28.09.2014
comment
Установка значений других полей работает без проблем. Я думаю, что проблема заключается в том, чтобы получить принятый экземпляр PKTEmbed только с URL-адресом...   -  person ShooTerKo    schedule 28.09.2014
comment
После создания экземпляра PKTEmbed его embedId равен 0.   -  person ShooTerKo    schedule 28.09.2014


Ответы (1)


Себастьян на Подио здесь. Вам нужно сначала создать серверную часть объекта PKTEmbed, а затем использовать его в качестве значения поля элемента. Итак, вы бы использовали:

PKTItem *item = ...;
[[PKTEmbed createEmbedForURLString:@"https://www.google.com"] onSuccess:^(PKTEmbed *embed) {
  item[@"link-field"] = embed;
} onError:^(NSError *error) {
  // Handle error
}];

Сервер назначит вам embedID и сгенерирует для вас миниатюру и т. д. Я рассмотрю возможность добавить возможность просто указать строку URL напрямую, так как я согласен, что это имеет большой смысл.

Надеюсь, это поможет!

person Sebastian Rehnby    schedule 03.10.2014
comment
Вау, я почти скопировал/вставил ваш код, и он отлично работает! Привет из Германии/Гамбурга! - person ShooTerKo; 06.10.2014
comment
Теперь я добавил возможность указывать NSString с URL-адресом непосредственно при создании объекта. Как и item["link-field"] = @"https://www.google.com", вам просто нужно запустить pod update, чтобы получить последние изменения из ветки master. Надеюсь, это поможет! - person Sebastian Rehnby; 14.10.2014
comment
Это хорошее и очевидное улучшение! Я думаю, что это очень поможет при установке значения поля ссылки, это действительно более прямолинейно :-) Но работает и другой способ! - person ShooTerKo; 15.10.2014