将应用程序部署到我的iOS设备,通过sysdiagnose触发日志收集,然后浏览system_logs.logarchive
从iTunes同步获取的日志消息时,我的应用程序从未显示过Info/Debug日志消息类型.
请注意,这个问题不同于现有但类似的问题
我正在使用Apple的 Paper Company(Swift)示例代码来说明我的问题.我开始将应用程序部署到运行iOS 11.0.3的iOS设备上.该方案使用调试模式.就我而言:
logarchive
Console 读取文件时,我从未看到我的应用程序的Info和Debug消息.其他消息类型,默认,错误和故障,继续显示,就像我在直播时一样.
由于这种令人费解的行为,我开始认为它可能与系统的配置有关.在记录文档中:
信息级消息最初存储在内存缓冲区中.如果没有配置更改,它们不会移动到数据存储,并在内存缓冲区填充时被清除.但是,当出现故障和可选的错误时,它们会在数据存储中捕获.将信息级别的消息添加到数据存储时,它们将保留在那里,直到超过存储配额,此时将清除最早的消息.使用此级别来捕获可能有用的信息,但对于排除错误不是必需的信息.
在阅读之后,我还尝试将Error类型更改为Fault类型,只是为了验证Info类型消息是否会显示.
os_log("B-b-b-b-b-b-b-bomb !", log: ViewController.ui_log, type: .fault) // previously .error
Run Code Online (Sandbox Code Playgroud)
但是,我仍然没有在logarchive
文件中看到任何信息日志消息.
我的问题:
ASSETCATALOG_COMPRESSION
Build Settings,因为已经指出了os_log
按预期工作的重要性.请参阅使用新的swift os_log api读取日志
logarchive
,我是否真的需要添加一个自定义配置文件,如Apple的Logging doc和mobleconfig示例中所示?然而,看起来很可疑,即使使用Fault类型,Info消息仍然不会被记录,并且我仍然可以看到来自其他进程的Info/Debug消息.在GLSL(特别是我正在使用的3.00)中,有两个版本
atan()
:atan(y_over_x)
只能返回-PI/2,PI/2之间的角度,同时atan(y/x)
可以考虑所有4个象限,因此角度范围涵盖-PI, PI,就像atan2()
在C++中一样.
我想用第二个atan
将XY坐标转换为角度.但是,atan()
在GLSL中,除了不能处理的时候x = 0
,还不是很稳定.特别是在x
接近零的地方,除法会溢出,导致相反的结果角度(你得到的东西接近-PI/2,你可以得到大约PI/2).
什么是一个好的,简单的实现,我们可以在GLSL之上构建,atan(y,x)
使其更强大?
我一直在使用URL Resources将缩略图元数据嵌入到我的自定义基于文档的文件中.当我导出自定义文档文件时,在iOS文件应用程序中浏览时,缩略图会很好地显示.
override func fileAttributesToWrite(to url: URL, for saveOperation: UIDocumentSaveOperation) throws -> [AnyHashable : Any] {
var attr: [AnyHashable : Any] = [URLResourceKey.hasHiddenExtensionKey: true]
// Ignore the proper resizing for now.
...
attr[URLResourceKey.thumbnailDictionaryKey] = [
URLThumbnailDictionaryItem.NSThumbnail1024x1024SizeKey: #imageLiteral(resourceName: "Star")
]
return attr
}
Run Code Online (Sandbox Code Playgroud)
(图标来源:使用你的面包)
但是,当我使用"共享"操作将文件导回到我的应用程序时,除缩略图外Copy to <MyApp>
,所有元数据似乎都存在.
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
// Other non-image metadata survives, like creationDate.
if let creationDateOpt = try? url.resourceValues(forKeys: …
Run Code Online (Sandbox Code Playgroud) 从iOS 11开始,每次使用UIDocument
API 创建新文档时都会遇到以下错误:
[错误]无法获取项目/var/mobile/Containers/Data/Application/XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX/Documents/myDoc-XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX.myFile(n)的属性值.
错误:错误域= NSFileProviderInternalErrorDomain代码= 1
"不允许读者访问该URL."
UserInfo = {NSLocalizedDescription =不允许读者访问该URL.}
不同于类似的问题(1,2,3上SO)在此,我没有使用UIDocumentBrowserViewController
.我只是创建一个UIDocument并自己调用save()
该Documents
目录.我发现的最接近的问题用途UIManagedDocument
.但是,就我而言,尽管出现错误消息,仍然可以成功创建和写入文件.
这是我保存例程的要点:
@IBAction func createDoc(_ sender: Any) {
let uuid = UUID().uuidString
let doc = Document(baseName: "myDoc-\(uuid)")
doc.save(to: doc.fileURL, for: .forCreating) { (completed) in
if (completed) {
doc.close(completionHandler: nil)
self.verifyNumberOfFiles()
}
}
}
Run Code Online (Sandbox Code Playgroud)
UIDocument
为了简化这个问题,我的子类也几乎是空白的:
class Document: UIDocument {
let fileExtension = "myFile"
override …
Run Code Online (Sandbox Code Playgroud) 很抱歉,如果这是重复的,但我尝试搜索包括Apple的字符串格式说明符和IEEE printf规范,但找不到这个简单的答案的答案.
我想打印带字符串格式化程序的os_log消息,用于字符串常量.类似于:
printf("Currently at processing state: %s\n", "reading in");
Run Code Online (Sandbox Code Playgroud)
在C.但是,当我在Swift中尝试这样的事情时:
os_log("Currently at processing state: %s", log: .default, type: .info, "reading in")
Run Code Online (Sandbox Code Playgroud)
它根本没有印刷任何东西.
如何使用字符串格式说明符打印字符串常量?我不知道如何做到这一点NSLog
.
编辑:os_log
需要StaticString
,所以它不能这样做"Something \(Expr) Something else"
像print()
.您仍然可以使用字符串格式来打印数字变量.我想知道在这种情况下如何打印字符串常量/变量.
编辑2:Apple实际上已经在其手册页面上讨论了这个主题,我设法错过了它,但它现在只在Objective-C API版本中讨论过.
我一直在关注斯威夫特应用教程苹果公司创建这里.具体来说,我正在尝试设置一些自定义按钮来创建评级控件.按钮有三个与之关联的图像:emptyStar,filledStar和highlightStar,用于按钮的不同状态.
我完全按照Apple提供的代码使用代码,但我不知道为什么我得到了这个编译时出现的神秘错误Expected pattern
,如截图所示:
我在这做错了什么?
我试图返回一个矩阵块作为函数的左值.假设我的函数看起来像这样:
Block<Derived> getBlock(MatrixXd & m, int i, int j, int row, int column)
{
return m.block(i,j,row,column);
}
Run Code Online (Sandbox Code Playgroud)
事实证明,似乎C++编译器的理解是块()算子仅给出临时值等返回它作为一个左值是由编译器禁止.然而,本征文档中有一些例子,我们可以使用本征作为左值(http://eigen.tuxfamily.org/dox/TutorialBlockOperations.html#TutorialBlockOperationsUsing),所以我想知道我们怎么也做相同的功能返回.
a.block(0,0,2,3) = a.block(2,1,2,3);
Run Code Online (Sandbox Code Playgroud)
谢谢!
在单元测试中,我有一个简单的表视图,其中包含一堆基本单元格(仅带有标签的单元格)。我想使用来访问单元格cellForRow(at:)
,因此我可以通过编程方式测试选择和取消选择行等内容,但是此cellForRow
查询始终返回nil
。
网上有一些讨论,我应该改用数据源tableView(_, cellForRowAt:)
。这不是我的意图。我只想测试单元的可见性,测试选择和取消选择它们。要测试可见性,cellForRow(at:)
是要使用的正确功能。此外,数据源tableView(_, cellForRowAt:)
没有超出范围索引访问的保障,而在这种情况下,表视图cellForRow(at:)
将正常返回nil
,我也想在上面测试我的表视图控制器。
然而,尽管我总可以从得到一个有效的单元格tableViewController.tableView(_:cellForRowAt:)
,我不明白为什么我总是nil
从tableView.cellForRow(at:)
。我已经验证了tableView
和tableViewController
都不nil
在我的单元测试中,并且还通过以下方式触发了视图加载:
_ = tableViewController.view
Run Code Online (Sandbox Code Playgroud)
在中setUp()
。我也用进行了验证tableView.indexPathsForVisibleRows
,结果中确实包含我用于的索引路径cellForRow(at:)
。
当我通过LLDB和断点查询单元时,有时我的单元会正确显示。我是否可能会丢失异步等待之类的东西,因为可视化加载单元可能是在其他线程中完成的?我是否应该添加某种期望等待,以便等到单元格完全加载后才能使用进行访问cellForRow(at:)
,即使tableView.indexPathsForVisibleRows
已经返回了预期的索引路径也是如此。我尝试进行设置,但不确定如何覆盖表视图控制器的init()
。
这是我在单元测试类中的代码。
import XCTest
@testable import TableViewTest
class TableViewTestTests: XCTestCase {
private var appDelegate: AppDelegate!
private var tableVC: TableViewController!
override func setUp() {
super.setUp()
appDelegate …
Run Code Online (Sandbox Code Playgroud) 我知道在iOS上,您只能使用NSMetadataQuery
iCloud文件。但是,根据Apple的指南,仍然可以NSMetadataItem
通过使用以下命令手动搜索所需的文件来获得FileWrapper
:
iOS允许在iCloud中搜索元数据以查找与文件相对应的文件。它仅提供用于文件元数据查询
NSMetadataQuery
和的Objective-C界面,并且NSMetadataItem
仅支持搜索iCloud的搜索范围。与台式机不同,无法使用元数据类搜索iOS应用程序的沙箱。为了搜索应用程序的沙箱,您将需要使用
NSFileManager
该类以递归方式遍历沙箱文件系统中的文件。找到匹配的文件后,您可以按照所需的方式访问该文件。您还可以使用NSMedatataItem
该类来检索该特定文件的元数据。
但是,我找不到NSMetadataItem
从iOS沙箱上的本地文件获取的方法。您可以NSMetadataItem
从文件URL 初始化,但这仅在macOS上可用。FileManager
似乎也没有NSMetadataItem
要从中检索的API 。
如何NSMetadataItem
在iOS应用沙箱上获取本地文件?
ios ×4
swift ×3
logging ×2
metadata ×2
uidocument ×2
xcode ×2
atan2 ×1
block ×1
c++ ×1
compile-time ×1
console ×1
constants ×1
coordinates ×1
eigen ×1
foundation ×1
function ×1
glsl ×1
ios11 ×1
lvalue ×1
reference ×1
sandbox ×1
string ×1
thumbnails ×1
uitableview ×1
unified-log ×1
unit-testing ×1
url ×1
uti ×1
xcode10 ×1
xctest ×1