自从我更新到iOS7后,我开始使用正在开发的应用程序日志消息"无法在此设备上启用MKMapView音高".该设备是iPhone4.
有人可以告诉我这条消息的含义以及我如何摆脱它?
我必须归档一个float有价值的东西INFINITY,然后去归档它.
这是我的示例代码:
要归档的对象:
@interface CodeInf : NSObject <NSCoding>
@end
@implementation CodeInf
- (void)encodeWithCoder:(NSCoder *)encoder {
float inf = INFINITY;
[encoder encodeFloat: inf forKey:@"INFINITY"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
float decodedInf = [decoder decodeFloatForKey: @"INFINITY"];
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
以下是归档/解密代码:
CodeInf *myCodeInf = [[CodeInf alloc] init];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myCodeInf];
myCodeInf = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Run Code Online (Sandbox Code Playgroud)
归档工作,但是归档会引发错误:
*由于未捕获的异常'NSRangeException'终止应用程序,原因:'* - [NSKeyedUnarchiver decodeFloatForKey:]:键(INFINITY)的值(inf)太大而不适合32位浮点数'
这是dearchiver中的一个错误,还是我做错了什么?
我用a UIImagePickerController拍电影.通过设置videoMaximumDuration控制器的属性来限制电影的长度.
当试图播放更长的电影时,会按预期显示警报.
但是,控件上方会显示名为VIDEO_TOO_LONG_TITLE 的意外附加警报(请参见下图).
显然这是一个iOS错误(仅部分本地化,没有选择剪辑).
是否可以隐藏这种不必要和不适当的警报?
最近,我在 Xcode 中记录了很多来自 CoreMotion 框架的奇怪警告,这些警告与功能相关getLocationForBundleID:
[Client] {"msg":"#NullIsland Either the latitude or longitude was exactly 0! That's highly unlikely", "latIsZero":0, "lonIsZero":0}
[Client] {"msg":"#NullIsland Received a latitude or longitude from getLocationForBundleID that was exactly zero", "latIsZero":0, "lonIsZero":0, "location":'28 5B E0 D7 EB 7F 00 00'}
Run Code Online (Sandbox Code Playgroud)
我没有看到我的应用程序有任何故障。所以也许这些日志可以被忽略,但无论如何它们都很烦人。
我的问题是:
如何纠正潜在错误?
我怎样才能停止这些警告?
我刚刚使用Xcode 8的转换功能将Swift 2应用程序转换为Swift 3.
我的代码有一个标记为的类WCSessionDelegate.
在Swift 2中,它编译时没有方法sessionDidBecomeInactive和sessionDidDeactivate.
如果我编译Swift 3版本,编译器会抱怨我的类不符合协议WCSessionDelegate,这显然是正确的.
然后它提供插入两个函数的存根:
public func sessionDidBecomeInactive(_ session: WCSession) { }
public func sessionDidDeactivate(_ session: WCSession) { }
Run Code Online (Sandbox Code Playgroud)
插入这些存根后,会报告以下错误:
Cannot override 'sessionDidBecomeInactive' which has been marked unavailable
Cannot override 'sessionDidDeactivate' which has been marked unavailable
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
为了访问当前的 git 分支并提交,我已经成功使用这个脚本很长时间了。
但是,在 Xcode 15.0 beta 中,脚本无法再访问 git 和 Info.plist 文件。我收到这些错误:
error: Sandbox: git(64989) deny(1) file-read-data <MyFolder>/.git/HEAD
error: Sandbox: PlistBuddy(64994) deny(1) file-read-data <MyFolder>/Info.plist
Run Code Online (Sandbox Code Playgroud)
是否可以再次允许访问这些文件?
在我的 UI 测试中,我UIView使用(缩短)以编程方式 创建了一个
let topMarker = UIView.init(frame: CGRect.init())
…
topMarker.accessibilityIdentifier = kTopMarker
Run Code Online (Sandbox Code Playgroud)
该topMarker视图位于自定义表格视图单元格中。在我的 UI 测试中,我使用
let new1stCell = app.cells.element(boundBy: 0)
let topMarker = new1stCell.otherElements[kTopMarker]
let topMarkerExists = topMarker.waitForExistence(timeout: 15)
XCTAssertTrue(topMarkerExists, "Top marker does not exist")
XCTAssertTrue(topMarker.isHittable, "Top marker is not hittable")
Run Code Online (Sandbox Code Playgroud)
当我设置测试失败断点时,测试在最后一行停止,即topMarker存在,但不可命中。
另一方面,我可以在快照中看到视图,即它存在并且可见。
这很奇怪,因为文档说:
如果元素存在并且可以在其当前位置单击、点击或按下,则 isHittable 返回 true。如果该元素不存在、不在屏幕上或被另一个元素覆盖,则返回 false。
我想,也许它是可见的,但不能被点击、点击或按下,因为userInteractionEnable不是true,但即使我将此属性设置为true,视图也不会变得可点击。
我错过了什么?
自从我最新更新 Xcode 以来,我在基于 Coredata 的应用程序中反复收到以下日志:
[logging] flag(s) 0x00000020 are reserved for VFS use and do not affect behaviour when passed to sqlite3_open_v2
Run Code Online (Sandbox Code Playgroud)
这只是对数噪音还是与我有任何关系?
更新:
这发生在 iOS 15.4 的 iPhone 上的 Xcode 13.2.1 下。在 iOS 15.2 的模拟器上不会发生这种情况。
设置:
我的应用程序使用私有数据(即通过 iCloud 登录识别的用户数据)或共享数据(即通过 iCloud 共享的另一个用户的数据)。
因此它使用 2 个持久存储,私有的和共享的。两者都通过 Coredata 和 CloudKit 同步进行镜像。
当用户从私有数据切换到共享数据并返回时,获取请求和保存请求将被定向到私有或共享持久存储。
用例:
假设用户正在使用私人商店。在这种情况下,共享 iCloud 数据库以及镜像共享持久存储不包含任何数据,因为共享未激活。
然后,他/她会收到另一个用户共享他/她的数据的邀请。当当前用户接受邀请时,其他用户的共享数据将映射到当前用户的共享iCloud数据库,并最终镜像到共享持久存储。
问题:
不幸的是,共享数据的镜像不会立即开始。有时,它会在几秒钟后启动,有时仅在应用程序重新启动后启动。
问题:
如何强制执行即时 Coredata 和 CloudKit 镜像?
显然 aNSPersistentCloudKitContainer没有手动触发重新同步的功能。我在这篇文章中发现的一个建议是重新初始化NSPersistentCloudKitContainer,这会触发重新同步。
这是正确的方法吗?
ios ×5
xcode ×3
core-data ×2
watchkit ×2
alert ×1
apple-watch ×1
archiving ×1
cloudkit ×1
core-motion ×1
ios7 ×1
mirroring ×1
mkmapview ×1
objective-c ×1
run-script ×1
storyboard ×1
swift3 ×1
vfs ×1
watchos ×1
wcsession ×1
xcode8 ×1