我正在使用Sitecore Mobile SDK創建本機IOS應用程序。到目前爲止,我可以閱讀我需要的項目,但是我在閱讀Droplink字段中鏈接項目的字段值時遇到困難。Sitecore Mobile SDK:如何讀取DropLink中linkedItem的值
我用這個代碼:
SCApiContext* context = [SCApiContext contextWithHost: @"http://<myhost>/-/item"];
SCItemsReaderRequest* request = [ SCItemsReaderRequest new ];
request.requestType = SCItemReaderRequestQuery;
request.request = @"/sitecore/content/Home/descendant::*[@@templatename='Content item']";
request.flags = SCItemReaderRequestReadFieldsValues;
request.fieldNames = [ NSSet setWithObjects: @"Content title", @"Content author", @"Content introduction", @"Content date", @"Content body" , nil ];
[context itemsReaderWithRequest: request](^(id result, NSError* error)
{
NSArray* items = result;
for (SCItem* item in result)
{
// get the author
__block NSString *author = @"empty";
SCField *dropLinkField = [item fieldWithName: @"Content author"];
[dropLinkField fieldValueReader](^(id result, NSError *error)
{
if (!error)
{
SCItem *linkedItem = result;
// TODO: author is not yet filled
NSSet *fieldsSet = [NSSet setWithObjects:@"Firstname", nil];
// this method seems to be skipped
[linkedItem fieldsReaderForFieldsNames:fieldsSet](^(id result2, NSError *error2)
{
if (!error2)
{
NSDictionary *fields = result2;
SCField *field_ = [fields objectForKey: @"Firstname"];
author = field_.rawValue;
}
});
}
});
}
}
原始項目被讀取,我可以讀取droplink字段的字段值。我似乎也可以閱讀鏈接的項目,因爲我可以將它寫入日誌中的itempath。但是,當我嘗試從鏈接項中讀取一個字段時,它會失敗,並且「fieldsReaderForFieldsNames」方法似乎被跳過。
我明明在這裏做得不對,但似乎忽視了這個問題...
編輯:
我忘了提,我使用Sitecore的7,如果它的確與衆不同不能確定。 我添加了上面創建SCApiContext和SCItemReaderRequest的行。
我使用匿名訪問,並在「網站設置」我用
itemwebapi.mode="StandardSecurity"
itemwebapi.access="ReadOnly"
itemwebapi.allowanonymousaccess="true"
我只是覺得,我發現這個問題,因爲我沒有設置場對多個領域的遠程讀取權限。但是,設置該權限並未解決此問題,而沒有遠程讀取字段的其他字段在API中返回。
1.您使用的是匿名上下文嗎?您是否認證爲「sitecore」或「extranet」用戶? 2.你可以附上創建SCApiContext和SCItemsReaderRequest的代碼嗎? 3.什麼是ItemWebAPI.config的「網站」設置?通常情況下,它位於「C:\ inetpub \ wwwroot \ _Your_Site_ \ Website \ App_Config \ Include」4.請確保您具有讀取,FieldRead和RemoteFieldRead權限授予您試圖訪問的項目。請使用Access Viewer來檢查。 Sitecore iOS SDK將所有項目Web API HTTP請求寫入日誌。你能否附上這些? –