Swagger: Unable to render this defition

最近用.NET Core開發API專案,本來順順好用的Swagger突然無法提供服務








後來發現是Function Naming造成,例如本來有個方法叫做GetOrders,後來又新增另一個方法叫做GetOrdersAsync,就會讓Swagger用來呈現API定義的頁面失效,要解決此問題不是去調整Swagger,而是調整Function Naming~~不要使用Async結尾的命名方式!!!

原因如下(微軟官方說明)

        從ASP .NET Core 3.0開始,ASP .NET Core MVC會自動把字尾(suffix)的Async移除,routing和link都會受到此預設影響。

解決方法

        方法1:修改性services.AddMvc(options => options.SuppressAsyncSuffixInActionNames = false);

        方法2:Rename Function避免使用Async字尾

MessageKit如何刪除聊天訊息

MessageKit是市面上眾多Chat UI Library之一,比較特別的是每筆訊息都是透過UICollectionView的section代表,而非其他libray常用的UITableView的cell

如果要實現單獨刪除某一筆訊息,可以參考此文Delete message by long press on cell 

但我需要的功能又更進階,希望delte的action只能在部分聊天訊息發生作用,例如我自己傳送失敗的訊息才可以刪除。要達到此目的,只需修改collectionView(_ :canPerformAction:forItemAt:withSender) ~在判斷邏輯上增添自己設計的condition即可(如下圖粉紅色框起處)