我刚刚下载了Xcode 6.3 beta 4,我的WatchKit应用程序现在无法构建并出现错误:
Embedded Binary Validation Utility Error
error: WatchKit apps must have a deployment target equal to iOS 8.2 (was 8.3)
Run Code Online (Sandbox Code Playgroud)
iOS应用程序和项目实际上具有7.1的部署目标并且总是有,但是我们一直在使用iOS 8.3 SDK来使用我们的WatchKit组件(使用Swift 1.2)而没有使用Xcode 6.3 beta 1,2和3.错误只出现在Xcode 6.3 beta 4中.
其他人有这个错误,并知道如何解决它?
最近,在最近几天内,每当我尝试在运行OS X 10.9.4的2013 11"MacBook Air上打开Xcode6-Beta2时,我都会收到问题报告并且Xcode无法运行.我尝试卸载Xcode 6(通过拖动它到垃圾桶)并重新安装它,我尝试重新启动计算机 - 既没有解决问题.

我最好的猜测是它与OS X 10.9.4有关 - 我在一周左右的时间里没有真正触及过Xcode,而我上周在机器上做的唯一一件大事就是更新到10.9.4.但我不太确定.有没有其他人看到这个错误?
我正在尝试使用iOS 8 UIAlertController代替我UIAlertView过去使用过的地方.我希望用户能够在此警报中输入文本并点击"确定"处理文本或"取消"取消.
这是基本代码:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Change Value" message:@"Enter your new value."];
[alert addTextFieldWithConfigurationHandler:nil];
[alert addAction: [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
UITextField *textField = alert.textFields[0];
NSLog(@"text was %@", textField.text);
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"Cancel pressed");
}]];
[presentingVC presentViewController:alert animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
随着老UIAlertView,我会用它标记alertViewStyle的UIAlertViewStylePlainTextInput.然后,如果用户在输入文本后点击其键盘上的"返回"按钮,willDismissWithButtonIndex:则会调用UIAlertViewDelegate方法buttonIndex(取决于在其中指定的按钮UIAlertView).
在新的情况下UIAlertController,如果用户点击"确定"或"取消"按钮,则按预期执行相应的操作; 但如果用户只是按下键盘上的"返回"键,它只是隐藏了键盘,但警报仍保留在屏幕上,并且不执行任何操作.
我已经考虑过配置文本字段来设置UITextFieldDelegateto self,然后可能重写textFieldDidReturn:方法,但我也不知道是否有办法以UIAlertController编程方式调用其中一个动作.无论如何,这听起来有点混乱/ hacky.我错过了一些明显的东西吗
我想我已经知道了这个问题的答案,但我想要问一下这个问题.
考虑Apple Watch内置地图应用.当您使用转弯指示时,当向左或向右转时,手表会播放自定义触觉模式 - 即使屏幕关闭且应用程序背景也是如此.另一个例子是当你正在锻炼时 - 如果你已经设定了一个目标,当你获得50%和100%时,即使你没有看手表,你也会轻轻拍打你的手腕.当时(屏幕关闭,应用程序背景).
在watchOS 2中,当屏幕关闭且应用程序背景化时,我们的第三方开发人员是否有办法让应用程序播放某种触觉模式?我知道该playHaptic:方法在应用程序处于活动状态时可以让您玩几种不同类型的触觉模式,我知道当应用程序处于非活动状态时,您可以收到通知 - 但通知只会播放"通知"触觉,没有选择.
我一直在开发一个原型iOS应用程序,利用iBeacons为办公室员工提供位置相关信息,具体取决于他们在办公室的位置.理想的用例是,每当员工进入或离开他们的办公室时,都会触发一个回调,它以通知的形式向他们提供一些信息(它可能会使服务器查询以获取信息等等 - 这类事情).我们还希望能够在应用程序后台或终止时执行此操作; 幸运的是,我们已经知道,即使应用程序处于后台或暂停状态,信标区域边界交叉也会触发相应的CoreLocation回调.
从环顾四周来看,我明白,对于如何进行信标区域监控,我有两种选择:
到目前为止,我选择了#1选项.这种方法的优点是我得到didEnterRegion:和didExitRegion:调用每个单独的信标,并立即知道我输入/退出的信标.此外,我只收到一个来电和一个退出电话,这正是我想要的.不幸的是,我刚刚意识到这种方法也限制了我20个信标(因为每个信标都有自己的区域).
我不熟悉#2的确切实现细节,所以如果我错了就纠正我.但似乎这种方法有更多的缺点:
基本上,我想知道是否有办法利用选项#2,但仍然有选项#1的好处 - 一种快速简便的方法来立即确定哪个信标只通过一个进入或退出回调触发了区域变化?
我希望这个问题足够清楚.在我自己的头脑中并不是完全清楚,特别是测距的工作方式.
在 iOS 13 中使用新的 Combine 框架。
假设我有一个上游发布者以非常不规则的速度发送值 - 有时几秒或几分钟可能没有任何值,然后一个值流可能会同时通过。我想创建一个自定义发布者,该发布者订阅上游值,缓冲它们并在它们进入时以已知的常规节奏发出它们,但如果它们都已耗尽则不发布任何内容。
举个具体的例子:
我订阅上游的发布者将每 1 秒产生一次值:
合并中现有的出版商或运营商似乎都没有完全按照我的意愿行事。
假设我想创建一个属性,它是UIViewController的子类,并且符合协议MyDelegateProtocol.在Objective-C中,我会写一些类似于:
@property (strong, nonatomic) UIViewController<MyDelegateProtocol> *delegate;
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何在Swift中写这个.我知道如何声明一个符合协议的属性,或者一个特定类型的属性:
let delegate : MyDelegateProtocol?
let delegate : UIViewController?
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何做到这两点.如果我尝试类似的东西:
let delegate : UIViewController<MyDelegateProtocol> ?
Run Code Online (Sandbox Code Playgroud)
然后我得到一个编译器错误Cannot specialize non-generic type 'UIViewController'.可能是因为我现在正在徘徊在仿制药领域.我试过通过Swift关于协议的协议和其他Stack Overflow问题的书,但我还没有找到我正在寻找的东西.
我有一个iOS和watchOS应用程序,支持iOS 11/12和watchOS 4/5.我一直在使用Xcode 10测试版向AppFall for TestFlight提交构建版本.今天我使用Xcode 10 GM提交了一个版本,我收到了以下电子邮件:
亲爱的开发者,
我们确定了您的应用最近交付的一个或多个问题,"littlefeed".请更正以下问题,然后重新上传.
无效的二进制体系结构 - iOS 3.0引入了对多个二进制体系结构的支持.如果您的二进制文件是为多个体系结构构建的,则Info.plist必须具有值为至少3.0的MinimumOSVersion键.此外,如果您的应用程序旨在支持早期的iPhone和iPod touch型号,您的应用程序必须至少包含armv6二进制文件; 除非在Info.plist UIRequiredDeviceCapabilities键中也存在armv7所需的设备功能,或者MinimumOSVersion键的值为4.3或更高,否则将不接受"瘦"的仅限armv7的二进制文件.
有关更多信息,请参阅技术问答QA1707:http://developer.apple.com/iphone/library/qa/qa2010/qa1707.html.
最好的祝福,
App Store团队
问题是,这些信息非常过时.MinimumOSVersion密钥早已被弃用; armv6是iOS 11+设备的无关架构; QA1707的链接已经死亡; Google和Stack Overflow上的所有相关问题往往可以追溯到2012年或更早,所以我实际上并不知道问题是什么.我最好的一击就是它与Apple Watch Series 4现在是一个64位处理器的事实有关,也许我需要配置我的手表应用程序并以某种方式观看扩展目标来处理它?
如果有人有任何想法,我们将不胜感激.
使用iOS 8.3模拟器和Xcode 6.3.2.
我在iOS 8中使用自我调整大小的技术,当单元格没有附件视图时它很有效,但当单元格有附件视图时会中断.我在单元格内的标签上设置了约束:

然后我使用an estimatedRowHeight并设置rowHeight为UITableViewAutomaticDimension(我在tableView:numberOfRowsInSection:这里省略,但是这个例子只返回3):
@implementation MyTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.estimatedRowHeight = 44.0f;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];
cell.titleLabel.text = @"Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment ";
return cell;
}
@end
Run Code Online (Sandbox Code Playgroud)
而且,一切看起来都很棒:

但是当我在故事板中添加附件视图时,不更改任何代码:

第一个细胞下地狱.Xcode的视图调试器告诉我标签高度是1785点,我必须使用gif在这里显示它:

我注意到其他两个细胞的大小都很好.我还注意到,当我旋转模拟器时,第一个单元格会正确调整大小,包括在它旋转回肖像后.
有谁知道为什么配件视图如此糟糕地混乱,我能做些什么来解决它?有关示例项目,请访问http://github.com/UberJason/SelfSizingNightmare.
从 iOS 9 开始,iOS 具有“按需资源”(ODR) 功能,允许 Apple 托管可以按需下载的资源,而不是将它们放在应用程序包中。通过使用资源标签标记资产,然后使用 anNSResourceBundleRequest请求给定标签的资产,我们可以通过将不常用的资产保留在设备之外直到需要来减少我们的应用程序包大小。
遗憾的是,我只能让它与 Xcode 中应用程序目标中专门包含的资源一起使用。有时代码和资源不包含在应用程序目标中,而是包含在共享或外部框架中(例如,通过 Cocoapods 分发的库或用于跨 iOS、tvOS、watchOS、macOS 应用程序共享代码和资产的共享框架) )。理想情况下,由于这些框架最终会嵌入到您的应用程序目标中,Xcode 只需能够从嵌入的框架中提取资源并标记它们以供下载。
尽管这些框架目标在其项目文件中有“资源标签”部分,我们仍然可以在这些目标中配置资源标签,但在运行时,资源请求只会失败并显示NSBundleOnDemandResourceInvalidTagError. 调试导航器中的“磁盘”窗格也不显示按需资源部分。
我找不到任何特别说明使用 ODR 是否可以使用外部框架的文档。有谁知道这是否可能,如果可能,如何实现?