小编Geo*_*f H的帖子

UICollectionView断言失败 - [UICollectionView _updateWithItems:tentativelyForReordering:]

iOS8.4.在设备上不是模拟器.

我得到了这个错误;

Assertion failure in -[UICollectionView _updateWithItems:tentativelyForReordering:], /SourceCache/UIKit/UIKit-3347.44.2/UICollectionView.m:4563

我打电话的时候

NSArray* array_indexPaths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
[self.collectionView reloadItemsAtIndexPaths:indexPaths];
Run Code Online (Sandbox Code Playgroud)

我试过把上面的东西放在里面 [self.collectionView performBatchUpdates:^{ 没有运气.

有没有其他人经历过这个或者知道为什么会这样?

crash objective-c ios uicollectionview uicollectionviewcell

13
推荐指数
1
解决办法
6395
查看次数

Unarchive数组与NSKeyedUnarchiver unarchivedObject(ofClass:from :)

自从升级到Swift 4.2以来,我发现许多NSKeyedUnarchiver和NSKeyedArchiver方法已被弃用,我们现在必须使用type方法static func unarchivedObject<DecodedObjectType>(ofClass: DecodedObjectType.Type, from: Data) -> DecodedObjectType?来取消归档数据.

我成功地存档了我的定制类WidgetData的数组,这是一个NSObject子类:

private static func archiveWidgetDataArray(widgetDataArray : [WidgetData]) -> NSData {

    guard let data = try? NSKeyedArchiver.archivedData(withRootObject: widgetDataArray as Array, requiringSecureCoding: false) as NSData
        else { fatalError("Can't encode data") }

    return data

}
Run Code Online (Sandbox Code Playgroud)

当我尝试取消归档此数据时出现问题:

static func loadWidgetDataArray() -> [WidgetData]? {

    if isKeyPresentInUserDefaults(key: USER_DEFAULTS_KEY_WIDGET_DATA) {

        if let unarchivedObject = UserDefaults.standard.object(forKey: USER_DEFAULTS_KEY_WIDGET_DATA) as? Data {

            //THIS FUNCTION HAS NOW BEEN DEPRECATED:
            //return NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? [WidgetData]

            guard let nsArray = …
Run Code Online (Sandbox Code Playgroud)

ios nskeyedunarchiver swift ios12

11
推荐指数
5
解决办法
1万
查看次数

iOS 上的 UIView 作为 SCNMaterialProperty

当在 SceneKit 场景中使用UIViewas 时,该视图可以成为响应者链的一部分吗?SCNMaterialProperty

澄清如何:

omg_you_can_use_an_actual_uiview_now = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500))
material_plane.diffuse.contents = omg_you_can_use_an_actual_uiview_now
let geom_plane = SCNPlane(width: 1, height: 1)
geom_plane.materials = [material_plane]
Run Code Online (Sandbox Code Playgroud)

uikit ios scenekit swift

5
推荐指数
0
解决办法
1371
查看次数

控制avqueueplayer中项目的预缓冲

请有人告诉我是否有一种方法可以选择性地预先缓冲AVQueuePlayer阵列中的avplayeritems,而不是将其保留AVQueuePlayer为仅在第一项完成播放时加载下一项的自动方式. 

我正在加载一系列4个短片段,我想在告诉AVQueuePlayer播放阵列之前预先缓存它们.实际上有一种方法可以获得avqueueplayer的bonet并根据需要控制预缓冲吗?

现在有了它的默认延迟加载行为,我在播放中得到了一些好处,剪辑甚至没有正常播放,因为它AVQueuePlayer正在尝试在播放时加载下一个剪辑.我在iPad上执行此操作已部署到实际设备而不是模拟器.

您可以使用mpmovieplayer通过调用[player prepareToPlay];基本上手动启动所需的每个视频文件的加载来执行此操作,然后您可以通过查看mpmovieplayerLoadstateDidChange通知并测试loadState值以查看是否已完全加载来检查加载的完成情况,然后告诉mpmovieplayer玩.你怎么能有效地做类似的事情AVQueuePlayer

这甚至可能还是我发现了一个主要的缺点AVQueuePlayer


playerObserver斯蒂芬很好的建议,但是需要的是你需要能够明确地将单个项目加载到内存中,然后告诉AVQueuePlayer'不要播放数组中的第一项,直到数组中的所有项都加载到内存'目前似乎没有办法启动数组加载中的第二项,直到第一项即将结束!

作为一个稍微独立的问题,我还注意到了一些奇怪的AVQueuePlayer地方,如果你将两个相同的源视频文件加载到数组中(两者都被引用为两个完全独立的,AVPlayerItems就像你应该做的那样)当你播放视频片段时数组一直播放,第一次剪辑播放ok,但是当再次播放相同的剪辑(作为单独的剪辑AVPlayerItem)时,它会非常快速地播放,直到视频中的某个点最终开始以正常速度播放从那里.

有没有人注意到这种行为?

avfoundation ipad ios avplayer avqueueplayer

4
推荐指数
1
解决办法
1838
查看次数

Swift ARKit如何完全杀死ARSession?

ARSCNView正在跑步ARSession。您可以session.pause()肯定地暂停会话,但这仍然有效,可以使会话继续运行。我尝试ARSCNView通过将其从其超级视图中删除来取消分配。该ARSCNView确实重新分配,但ARSession仍运行后!您不能分配nilARSession任何一个。我可以看到ARSessionDelegate

func session(_ session: ARSession, didUpdate frame: ARFrame) 
Run Code Online (Sandbox Code Playgroud)

仍在被叫!

完成后,如何用ARKit彻底擦拭干净?

可能吗?

swift arkit arscnview

4
推荐指数
1
解决办法
1079
查看次数