iOS 10和macOS Sierra中有一个新的日志记录系统.但我似乎无法让它在Xcode中运行.os_log不被识别,也没有在文档中提到的任何其他函数/常量.我是否需要链接框架或导入标题或其他内容?我错过了一些明显的东西吗
说今天是星期一,下午1点.我想从今天下午2点开始,从我的iOS应用程序安排每周本地通知.我这样做:
NSDateComponents *components = [[[NSDateComponents alloc]init]autorelease];
components.weekday = 2;
components.hour = 14;
components.minute = 0;
UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:YES];
//then make a UNMutableNotificationContent and UNNotificationRequest and schedule it
Run Code Online (Sandbox Code Playgroud)
但如果我想在下周一下午2点开始,我该如何跳过第一次?
要以另一种方式提出问题,如何UNCalendarNotificationTrigger在某个任意时间安排重复开始,而不是第一次出现重复间隔?
在列出所返回Id的TimeZoneInfos的所有属性时,将TimeZoneInfo.GetSystemTimeZones显示两个版本的EST:美国东部标准时间和东部标准时间.有什么不同?
我也看到美国山地标准时间和山地标准时间,但我很确定这是因为美国版本适用于亚利桑那州,它没有观察到夏令时.我假设常规的山地标准时间适用于山区时区的其他美国州.我对么?
美国时区的有用链接:http://www.timetemperature.com/tzus/time_zone.shtml
我正在我的应用程序中使用UITableViewDiffableDataSource. 每个单元格代表一个搜索命中并在单元格标题中突出显示搜索匹配项,有点像 Xcode 的 Open Quickly 窗口突出显示其结果项的部分。在搜索字段中输入文本时,我更新了结果列表。结果随着相关性的变化在列表中上下移动。
诀窍是每次搜索文本更改时我都需要强制每个单元格重新呈现,因为新的搜索字符串意味着更新单元格标题的突出显示部分。但我不想动画删除和插入,因为它仍然是同一个项目。如何使用快照告诉数据源它需要重新加载单元格?
我这样声明数据源:
@property (retain) UITableViewDiffableDataSource<NSString *, SearchHit *> *dataSource;
Run Code Online (Sandbox Code Playgroud)
SearchHit代表一个搜索结果;它具有显示标题和要在标题中突出显示的范围数组的属性。并且它会覆盖hashandisEqual:以便唯一标识每个结果行。
我的代码看起来像这样:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
NSArray<SearchHit *> *hits = [self fetchHits:searchText];
NSDiffableDataSourceSnapshot<NSString *, SearchHit *> *snap = [[[NSDiffableDataSourceSnapshot alloc] init] autorelease];
[snap appendSectionsWithIdentifiers:@[@""]];
[snap appendItemsWithIdentifiers:hits];
[snap reloadItemsWithIdentifiers:hits];
[self.dataSource applySnapshot:snap animatingDifferences:YES];
}
Run Code Online (Sandbox Code Playgroud)
起初我没有在reloadItemsWithIdentifiers那里打电话,然后一旦它出现在结果列表中,任何单元格都不会改变。添加reload呼叫有帮助,但现在大多数单元格总是落后于一个更新。这在我的代码中的某处闻起来像是逻辑错误,但我已经验证传递给快照的命中是正确的,而传递给数据源的单元格创建回调的命中不是。
Donny Wals 的这篇文章和涉及 Steve Breen 的相关 Twitter 线程建议解决此问题的方法是使项目标识符类型仅表示显示单元格所需的属性。所以我更新了SearchHit的散列和相等比较以包含标题的突出显示部分,而他们以前没有。然后我在每次更新时删除并插入所有单元格的动画,这是我不想要的。
这看起来reloadItemsWithIdentifiers应该怎么做……对吧?
示例项目在这里 …
objective-c uitableview diffabledatasource nsdiffabledatasourcesnapshot
我正在设置NSFileCoordinator并NSFilePresenter在我的应用程序中,因此我可以安全地从AppleWatch应用程序执行文件IO.在我的代码中有一些地方我快速连续几次写入文件.这本身就是一个问题,我正在努力纠正它,但我注意到这个过程中有些奇怪的行为.
我像这样包装我的写作:
//In a class that implements NSFilePresenter:
NSFileCoordinator *coord = [[NSFileCoordinator alloc]initWithFilePresenter:self];
[coord coordinateWritingItemAtURL:self.presentedItemUrl options:0 error:nil byAccessor:^(NSURL *url)
{
//do my writing here using CFWriteStreamRef or NSOutputStream
}];
Run Code Online (Sandbox Code Playgroud)
在第一次写入时,写入块在1 ms内发生.但在那之后,调用coordinateWritingItemAtURL和正在执行的写入块之间大约有0.5秒的延迟.
这是预期的行为吗?
一些文档用于批处理操作NSFileCoordinator并且NSFilePresenter说prepareForReadingItemsAtURLs:writingItemsAtURLs:options:error:byAccessor:用于批处理操作,但是当我不进行批处理时,得到如此长的延迟似乎很奇怪.
更新:这也发生在阅读上.
更新2: 这是一个重现问题的示例项目.
我UIPopoverPresentationController在iOS应用程序中使用popovers.当弹出窗口中的导航控制器推动新的视图控制器时,弹出框会调整到该视图控制器的大小preferredContentSize.但是当导航控制器将视图控制器弹出堆栈时,弹出框不会调整为以前的大小.我该怎么做呢?
可能重复这个问题,但对于现代UIPopoverPresentationController.
更新:请参阅此处以获取说明问题的示例代码.克隆它并在iPad模拟器中运行它.点击"弹出"按钮,您将获得带有导航控制器的弹出窗口.点击"推杆"按钮项,您将在堆栈上获得一个新的更高的VC(大小在导航栏中).流行音乐并没有将其重新调整为原来的状态.
我有一个带有a的应用程序WKWebView.在这个应用程序中,我自定义了中显示的选项UIMenuController.无论我做什么,Web视图似乎都会将复制和定义选项添加到菜单中.如果我将自己设置为第一响应者并为所有内容返回NO,我仍然可以复制并定义选项.而且我已经实现了自己的复制选项,根据用户的喜好和选择的内容做了特殊的事情.有没有办法删除这些额外的选项?
更新:我已将此归档为雷达18487289.
从 iOS 9 开始,UICollectionView 通过beginInteractiveMovement及其同级方法支持交互式移动。从iOS 11开始,它还支持拖放,这似乎也支持移动。在 iOS 13 beta 4 中,拖放手势已与UIContextMenuInteraction动画相结合(Twitter 链接),因此您可以从上下文菜单过渡到拖动操作,但通过交互式移动 API 重新排序时情况并非如此。
在集合视图中使用拖放来实现项目的交互式移动是否更好?
我正在我的ASP.NET Web应用程序中绘制形状.在IE9和其他浏览器中,我正在使用SVG,它工作得很好.在IE8及以下版本中,我使用的是VML.我发现当它处于IE8标准模式(不使用兼容性视图)时,IE8根本不显示VML.
我的doctype设置为<!DOCTYPE html>.如果我参加了doctype走完全,IE8进入怪癖模式和工作正常,但IE9然后去它的怪癖模式(而不是IE9标准),并且不显示SVG.
这是在测试页面上发生的,因此除了包含div的表单之外没有任何内容,div包含<svg>元素及其子元素或VML元素.
这里发生了什么?看起来我不应该为不同的浏览器更改doctype,而且Stack Exchange用户页面上的信誉图看起来也是一样的(IE8及以下的VML,其他人的SVG,HTML5 doctype)......
internet-explorer svg vml internet-explorer-8 internet-explorer-9
这似乎应该很容易找到,但我不认为它记录在任何地方.如果我打开一个sqlite连接并开始一个事务而没有通过调用指定超时sqlite3_busy_timeout,那么使用什么默认值?或者这会以某种方式导致未定义的行为?这种方法的文档没有说明.
我的具体用例是与iOS捆绑的版本,但我猜测答案在各个平台上几乎相同.
ios ×5
objective-c ×2
.net ×1
c# ×1
cocoa ×1
ios8 ×1
logging ×1
nsdiffabledatasourcesnapshot ×1
sqlite ×1
svg ×1
timezone ×1
transactions ×1
uidragitem ×1
uipopover ×1
uitableview ×1
vml ×1
wkwebview ×1
xcode ×1