我有一些自定义类,这些类创建了一个对象数组,然后将这些对象动态地转换为UICollectionView的单元格,并且这些类基本上都像这样:
<tr ng-repeat="s in rollCallList">
<td align="left">{{s.Last_Name}}, {{s.First_Name}}</td>
<td>
<input name="{{s.dc_number}}" id="id1{{s.dc_number}}" type="radio" value="P" ng-checked="radiocheck" />P
<input name="{{s.dc_number}}" id="id2{{s.dc_number}}" type="radio" value="A" />A
<input name="{{s.dc_number}}" id="id3{{s.dc_number}}" type="radio" value="X" />X
</td>
</tr>
<tr>
<td colspan="2">
<button class="btn" ng-show="SaveAttBtn" ng-click="SaveAtt(RollCallDate)">Save Attendance</button>
<button class="btn" ng-show="DeleteAttBtn" ng-click="DeleteAtt(RollCallDate)">Delete Attendance</button>
</td>
</tr>
$scope.SaveAtt = function (dt) {
$scope.rollCallList.forEach(function (obj) {
var dc = obj.dc_number;
var attVal = $('input[name=' + dc + ']:checked').val();
obj.status = attVal;
obj.classDate = dt;
console.log(obj);
});
}
然后使用此类的实例创建一个像这样的单元:
import Foundation
class BoardNote : NSObject {
var note_id : String = ""
var itemType : String = ""
var added_by : Any = ""
var link : Any = ""
var content : String = ""
var board_id : Any = ""
var date_added : Any = ""
}
当我尝试在集合视图中实现基本的拖放操作时,出现错误“无法将类型为“ BoardNote”的值转换为'NSObject'。
我看到我可能还需要将此做为NSItemProviderWriting类的扩展,但是我不确定如何做。
这是我的DragDelegate扩展的开头,其中错误发生在第4行,这是线程1:信号SIGABRT:
let cell = collectionView.dequeueReusableCell(withReuseIdentifier:
"noteViewCell", for: indexPath) as! NoteViewCell
cell.content.text = (itemArray[indexPath.row] as!
BoardNote).content
cell.noteId = (itemArray[indexPath.row] as! BoardNote).note_id
print("made note cell")
return cell
谢谢!
答案 0 :(得分:0)
首先,您需要删除此行上的项目:
NSItemProvider(object: item as! NSObject as! NSItemProviderWriting)
做到这一点:
NSItemProvider(object: item)
然后,错误是不明原因的:您需要使您的自定义类符合NSItemProviderWriting和NSItemProviderReading协议,然后添加该协议所需的存根方法:
class BoardNote : NSItemProviderWriting, NSItemProviderReading{
var note_id : String = ""
var itemType : String = ""
var added_by : Any = ""
var link : Any = ""
var content : String = ""
var board_id : Any = ""
var date_added : Any = ""
}
注意: :您可以省略NSObject继承,here是原因
您只需单击错误红色信号然后单击“修复”即可添加协议存根。
Here有关如何进行拖放的教程,因此您可以检查如何填充NSItemProviderWriting和NSItemProviderReading协议存根。
Here您可以检查的类似问题
基本上,我链接的问题是在同一行 NSItemProvider(object:item) 中询问问题,但问题是开发人员未提供该方法一个类实例,但是类名