小编Tom*_*ing的帖子

在ASP.NET视图状态下存储Dictionary <string,string>?

我正在尝试Dictionary<string, string>在我正在为ASP.NET 2.0开发的自定义控件的ViewState中存储一个:

private Dictionary<String, String> Items
    {
        get
        {
            object d = ViewState["Items"];
            return (d == null ? null : (Dictionary<String, String>)d);
        }
        set
        {
            ViewState["Items"] = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

访问它看起来像这样:

public void UpdateData
{
    if (this.Items == null)
        this.Items = new Dictionary<string, string>();
    else
        this.Items.Clear();
    //Fill the collection
}
Run Code Online (Sandbox Code Playgroud)

当第一次加载页面时设置它,它似乎工作正常.但是在随后的回发中,返回的值始终为null(第一个条件总是发生).调试显示它已null退出属性中的ViewState get.

我做了一些研究,发现类必须实现IStateManager为可以在ViewState中保存,而字典MSDN页面似乎表明Dictionary<TKey, TValue>没有.但我之前在ViewState中存储了字典没有问题.这里发生了什么?我以前的经历是侥幸吗?

更新:我尝试在属性中添加一些测试代码:ViewState["ItemTest"] = "foo";setstring test = (string)ViewState["ItemTest"];中 …

c# asp.net viewstate

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

在[UIViewControllerTransitionCoordinator animateAlongsideTransition]中指定动画选项

我有一个使用的iPad应用程序UICollectionView.在iOS 8,当装置旋转时,在viewWillTransitionToSize我的主视图控制器,我请animateAlongsideTransitionid<UIViewControllerTransitionCoordinator>参数和动画帧改变在主视图中,其中一个包含的集合视图各种视图.

在iOS 7中,我用来willRotateToInterfaceOrientation:duration:通过[UIView animateWithDuration:delay:options:animations:completion:]调用来动画帧更改.我UIViewAnimationOptionLayoutSubviews作为options参数传递,并且集合视图在调整大小时动画化其项目的重新布局.但是在iOS 8上animateAlongsideTransition,只有最顶层的视图才能生成动画; 它的所有子视图,包括集合视图及其单元格,都只是闪烁到新的大小/帧.

我的问题:我该如何使用或达到的效果UIViewAnimationOptionLayoutSubviews使用[animateAlongsideTransition]

animation rotation ios uicollectionview

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

UICollectionView布局更改的默认动画持续时间是多少?

说我这样做:

[self.collectionView setCollectionViewLayout:myNewLayout animated:YES];
Run Code Online (Sandbox Code Playgroud)

动画的持续时间是多少?

我的应用是,当这种情况发生变化时,我会在单元格中设置图层属性,并且由于图层动画不会被UIView基于块的动画捕获,我必须使用自己的动画块单独进行.

animation ios uicollectionview

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

在UIWebView和WKWebView中快速点击

WebKit的快速点击功能已经在iOS 9.3中用于Safari(参见文档).我在一个使用Web视图显示文本的电子阅读器应用程序上工作.我们仍然使用UIWebView,因为各种 错误WKWebView,但我可以切换出去WKWebView很容易用于测试目的.我们拥有自己的自定义触控功能,可以延长350毫秒的触控延迟,让链接感觉更快.我刚尝试了快速点击的东西,它似乎只能工作WKWebView.这是正确/确认/记录在某处吗?还是应该在这两个快速水龙头工作UIWebViewWKWebView

更新: 是一篇关于iOS 8当前快速点击行为的一些变化的文章,该行为仅出现在WKWebView.但没有关于新的iOS 9.3的东西.

webkit uiwebview ios wkwebview

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

如何让Xcode 8从命令行自动生成配置文件?

我刚刚在Xcode 8中设置我的项目以使用新的自动配置.我正在尝试我的命令行构建(使用xcodebuild构建.xcarchive.ipa文件类似这样).但是,对于我在Xcode 8中实际未打开的每个项目,命令行存档都会因无效的配置而失败.当我在Xcode 8中打开项目并转到项目编辑器的"常规"选项卡时,它会在代码签名部分中显示一个微调器,并说明生成配置文件,然后显示一切准备就绪.然后我又跑xcodebuild了,效果很好.

我的问题:有没有办法从命令行触发自动生成/设置魔术?

xcode provisioning-profile ios-provisioning xcode8

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

UICollectionView reloadData不起作用

viewDidLoad在获取使用的数据后,将其调用。如果未更改任何数据,则在进行一些打印调试后,它似乎将调用所有适当的delegeate方法。如果某些数据已更改,cellForItemAt则不会调用。

重新加载整个部分效果很好。但是给我一个不需要的动画。尝试UIView在重新加载之前禁用动画,并在重新加载之后启用动画,但是仍然给了我一点动画。

collectionView.reloadSections(IndexSet(integer: 0)) 
Run Code Online (Sandbox Code Playgroud)

这是我当前的情况,当使用reloadData()时

UICollectionViewController是TabBarController的一部分。我正在使用自定义UICollectionViewCells。数据是从CoreData加载的。

第一次打开标签页,它可以正常工作。在另一个选项卡中更新收藏夹项并返回此collectionView之后,其未更新。但是,如果我选择另一个选项卡,然后返回到该选项卡,则它已更新。

var favorites = [Item]()


override func viewWillAppear(_ animated: Bool) {

    collectionView!.register(UINib.init(nibName: reuseIdentifier, bundle: nil), forCellWithReuseIdentifier: reuseIdentifier)

    if let flowLayout = collectionView!.collectionViewLayout as? UICollectionViewFlowLayout {
        flowLayout.estimatedItemSize = CGSize(width: 1,height: 1)
    }

    loadFavorites()

}


func loadFavorites() {

    do {
        print("Load Favorites")

        let fetch: NSFetchRequest = Item.fetchRequest()
        let predicate = NSPredicate(format: "favorite == %@", NSNumber(value: true))
        fetch.predicate = predicate
        favorites = try managedObjectContext.fetch(fetch)

        if favorites.count > 0 {
            print("Favorites count: \(favorites.count)") …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview swift

5
推荐指数
2
解决办法
5833
查看次数

如何使用 AVAssetDownloadTask 下载尚未流式传输的 FairPlay 加密的 AVURLAsset 实例?

我正在尝试用于AVAssetDownloadTask离线下载和播放 FairPlay 加密的音频内容。我不断收到这样的错误urlSession:task:didCompleteWithError:

错误域=AVFoundationErrorDomain代码=-11863“操作已停止”UserInfo={NSLocalizedFailureReason=此内容不再可用。,NSLocalizedDescription=操作已停止}

我的流程是:

所有这些都有效,并且以与 Apple 的HLSCatalog 示例代码中相同的方式完成。但下载时仍然会出现上述错误,即使将相同的播放列表和关键 URL 插入示例代码中也可以正常下载。

我最终发现,AVAssetDownloadTask只会下载一个已经流式传输并给出解密密钥(通过)并且不与播放器关联的AVURLAsset 实例。AVAssetResourceLoaderDelegate我不能只是AVURLAsset使用与已经播放的内容相同的 URL 创建一个新内容并下载它。所以看来,为了下载任意 FairPlay 内容,我必须:

  • 做一个AVURLAsset
  • 制作一个AVPlayer并将其音量设置为0
  • 给它资产并播放它
  • 等到它从资源加载器请求密钥并开始播放
  • 将其交给下载任务并取消与播放器的关联

但这看起来很可怕。这不可能是真的。

所以,我的问题是:如何下载 FairPlay 加密的 AVURLAsset,而不需要之前流式传输该特定实例?

ios avassetdownloadtask avassetresourceloaderdelegate

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

是什么导致 AVAssetCache 报告完全下载的资产无法离线播放?

我正在开发一个 iOS 应用程序,它通过 HLS 播放 FairPlay 加密的音频,并支持下载和流式传输。在飞行模式下,我无法播放下载的内容。如果我AVURLAsset在下载完成时从本地 URL创建一个,asset.assetCache.isPlayableOffline返回NO,并且当我尝试以飞行模式播放时,它仍然尝试请求 .m3u8 播放列表文件之一。

我的主播放列表如下所示:

#EXTM3U
# Created with Bento4 mp4-hls.py version 1.1.0r623

#EXT-X-VERSION:5
#EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,URI="skd://url/to/key?KID=foobar",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"


# Media Playlists
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=133781,BANDWIDTH=134685,CODECS="mp4a.40.2" media-1/stream.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=67526,BANDWIDTH=67854,CODECS="mp4a.40.2" media-2/stream.m3u8
Run Code Online (Sandbox Code Playgroud)

流播放列表如下所示:

#EXTM3U
#EXT-X-VERSION:5
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:30
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://url/to/key?KID=foobar",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
#EXTINF:30.000181,
#EXT-X-BYTERANGE:470290@0
media.aac
# more segments...
#EXT-X-ENDLIST
Run Code Online (Sandbox Code Playgroud)

下载资产:

AVURLAsset *asset = [AVURLAsset assetWithURL:myM3u8Url];
[asset.resourceLoader setDelegate:[FairPlayKeyManager instance] queue:[FairPlayKeyManager queue]];
asset.resourceLoader.preloadsEligibleContentKeys = YES;
AVAssetDownloadTask *task = [self.session assetDownloadTaskWithURLAsset:asset assetTitle:@"Track" assetArtworkData:imgData options:nil];
[task resume];
Run Code Online (Sandbox Code Playgroud)

在代表的URLSession:assetDownloadTask:didFinishDownloadingToURL:

self.downloadedPath = location.relativePath;
Run Code Online (Sandbox Code Playgroud)

在代表的URLSession:task:didCompleteWithError: …

avfoundation fairplay http-live-streaming avasset avassetdownloadtask

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

AVContentKeySession makeStreamingContentKeyRequestDataForApp 可以安全地强制同步吗?

我有一个应用程序可以流式传输受 FairPlay DRM 保护的音频。它最初AVAssetResourceLoaderDelegate用于交付 FairPlay 密钥,但现在我将其更新为AVContentKeySession用于iOS 11.2 及更高版本。附注:如果你想做到这一点,在缺少文档感到沮丧,有一个在示例代码“FairPlay的流媒体服务器SDK(4.2.0)”链接在这里

我的每个音频产品都被分成了许多曲目。当我打开一个音频产品时,我通过AVQueuePlayer. 这些轨道中的每一个都会生成一个对 FairPlay 密钥的请求。在没有已下载的持久密钥的情况下,这些请求中的每一个都进入密钥服务器,下载密钥,生成持久密钥并保存它。每个轨道都有相同的密钥,因此它们最终都具有相同的持久密钥数据,并且每个轨道都覆盖最后一个以完成。

因为我的密钥服务器的成本取决于我发出的密钥请求的数量,所以我希望只有第一个请求实际到达密钥服务器,随后的请求使用持久密钥。但是用于将 SPC 数据传递给密钥服务器的方法makeStreamingContentKeyRequestDataForApp使用异步完成块。onAVAssetResourceLoadingRequest等效方法是同步的。

我的问题:使用信号量强制此调用同步是否安全?像这样:

-(void)handleOnlineRequest:(AVContentKeyRequest *)req
  NSData *appCert = [self _getAppCertData];
  NSData *assetId = [self _kidFromRequest:req];
  dispatch_semaphore_t sema = dispatch_semaphore_create(0);
  [req makeStreamingContentKeyRequestDataForApp:appCert
                              contentIdentifier:assetId
                                        options:nil
                                        completion:^
    NSData *contentKeyRequestData, NSError *error)
    {
      //request key data and respond to request

      dispatch_semaphore_signal(sema);
    }];
  dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
  dispatch_release(semaphore);
Run Code Online (Sandbox Code Playgroud)

下载以前未流式传输的音频时,效果尤其明显。使用 AVAssetDownloadTask 下载音频的速度非常慢,所以我一次启动很多,每个都会生成一个密钥请求。

avfoundation fairplay ios avcontentkeysession

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

如何在 iOS 13 上的 Web 内容中使用纽约字体?

苹果发布新的字体,纽约,与iOS 13.是否有可能将其设置在CSS的网页内容,就像使用-apple-system旧金山

css fonts webkit ios13

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