gpt4 book ai didi

ios - 尝试读取提要时出现 jsonDecode DecodingError

转载 作者:行者123 更新时间:2023-11-29 13:54:27 24 4
gpt4 key购买 nike

我试图将 getstream 集成到我的应用程序中,我需要一些帮助来解决我遇到的 jsonDecode 错误。

以下是我采取的步骤:1.手动创建一个名为allevents

的新feedgroup

2.我的后端能够在所有事件中创建一个名为 bday_11 的新提要。

  1. 我从后端创建了 2 个用户 ameetramya 并让他们添加事件。然后使用 follow api,我让 bday_11 同时关注 ameetramya

  2. 当我手动执行 bday_11.get() 时,我能够按预期查看事件

In [86]: bday_11.get()
Out[86]:
{u'duration': u'22.46ms',
u'next': '',
u'results': [{u'actor': u'chris',
u'foreign_id': u'picture:10',
u'id': u'a0febe54-bfad-11e9-9361-0a286b200b2e',
u'message': u'Beautiful bird!',
u'object': u'picture:10',
u'origin': u'user:ameet',
u'target': '',
u'time': datetime.datetime(2019, 8, 15, 22, 40, 6, 280764),
u'verb': u'add'},
{u'actor': u'chris',
u'foreign_id': u'picture:10',
u'id': u'96919914-bfad-11e9-933c-0a286b200b2e',
u'message': u'Beautiful bird!',
u'object': u'picture:10',
u'origin': u'user:ramya',
u'target': '',
u'time': datetime.datetime(2019, 8, 15, 22, 39, 48, 788252),
u'verb': u'add'}]}

现在在客户端,这就是我在 AppDelegate 上初始化客户端的方式。这是使用我们的提要参数对您现有的演示项目进行的修改

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

// Setup Stream Client.

Client.config = .init(apiKey: "ehs4s58m3u43",appId: "57260",token:FEED_TOKEN)

//Client.config = .init(apiKey:apiKey, appID:appID,token:FeedToken)

    // Setup Stream user.

Client.shared.getCurrentUser(typeOf: GetStreamActivityFeed.User.self) { result in

// Current user is ready. Load timeline feed.

if result.error == nil, let viewController = self.window?.rootViewController as? ViewController {

viewController.reloadData()

}

}



return true

}

以下是我尝试阅读创建的提要的方式。

override func viewDidLoad() {

// Setup a timeline feed presenter.



let timelineFlatFeed = Client.shared.flatFeed(feedSlug: "allevents",userId: "bday_11")

presenter = FlatFeedPresenter<GetStreamActivityFeed.Activity>(flatFeed: timelineFlatFeed,

reactionTypes: [.likes, .comments])





super.viewDidLoad()

setupTextToolBar()

subscribeForUpdates()

}

我似乎在演示者中遇到以下错误:

❌ jsonDecode("The data couldn’t be read because it isn’t in the correct format.", Optional(Swift.DecodingError.typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: 
[CodingKeys(stringValue: "results", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0),
CodingKeys(stringValue: "actor", intValue: nil)], debugDescription: "Expected to decode Dictionary<String, Any> but found a string/data instead.", underlyingError: nil))), 667 bytes)

有人可以帮忙吗?

最佳答案

Stream Feeds 有一个名为 Enrichment 的功能(请查看文档 here ),您可以在其中保持数据规范化并使用对对象的引用而不是事件中的完整对象。在 iOS 客户端上,它默认启用,Activity默认使用 actor作为User对象,因此事件请求需要一个 JSON 对象 actor键,但它有字符串 u'actor': u'chris' .所以,如果你将 Actor 用作 User object 解析也将起作用。另一种方法是禁用丰富并使用自定义 Activity以 Actor 为字符串: typealias MyActivity = EnrichedActivity<String, String, DefaultReaction>

presenter = FlatFeedPresenter<MyActivity>(flatFeed: timelineFlatFeed,
reactionTypes: [.likes, .comments])

关于ios - 尝试读取提要时出现 jsonDecode DecodingError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com