小编Gre*_*reg的帖子

不支持的配置:此文件设置为针对早于部署目标的版本构建.功能可能有限

谁能解释这个警告?

Unsupported Configuration: This file is set to build for a version older than the deployment target. Functionality may be limited.
Run Code Online (Sandbox Code Playgroud)

当我的应用程序最初编写时,我试过的故事板不受支持.这使得必须完全从代码管理多个视图,即不使用XIB文件.所以我的应用程序基本上使用MultiviewAppDelegate使用MultiviewViewController在多个视图之间切换.

它最初是在iOS5下编写的,现在使用运行iOS9的iPhone6 Plus在Simulator(9.2)上运行.

OrdoDei帮助我解决了与未使用的XIB文件相关的类似问题.如果我的应用程序使用故事板,我的特定问题可以解决.此特定警告的大多数其他问题似乎与我的应用程序不使用的网络有关.

还有其他人不得不处理类似的问题吗?

objective-c xib ios

16
推荐指数
3
解决办法
9468
查看次数

Block隐含地保留了"自我"; - 但它是否有意?

昨天我的最新iOS版本在Xcode上没有任何警告.在一夜之间升级到版本9.3(9E145)之后,我收到了多个警告.当我试图self->score下面的答案(1)对一个类似问题的警告消失.

但是在最近对同一个问题的回答(2)中,通过改变设置来解决问题.目前我的设置Apple LLVM 9.0 - Warnings -Objective C and ARC

在块内隐含保留"自我"是的

但我不明白Block implicitly retains 'self'下面的代码的上下文中是什么意思,所以我不能说这种行为是否是"有意"的.或者我是解决了问题还是只是隐藏了它.或者答案1是否比答案2更好.

有人可以解释Block implicitly retains 'self'在这种情况下的意义吗?谢谢.

score.alpha = 1.0;

if (sequenceState >= STATES_Count)
{
    [GraphicScore animateWithDuration:8.0f
                                delay:1.0f
                              options:UIViewAnimationOptionCurveEaseOut
                           animations:^{self->score.alpha = 0.0;} // animations:^{score.alpha = 0.0;}
                           completion:^(BOOL finished){ }];
}
[self addSubview:score];
Run Code Online (Sandbox Code Playgroud)

objective-c ios objective-c-blocks

7
推荐指数
1
解决办法
5587
查看次数

当我结合使用UIPanGestureRecognizer和自动布局时,我的UIViews混乱了

当我在iPhone或iPad上为每个允许的设备方向拖动它时,我想要一个球来跟踪我的手指.当旋转设备时,视图似乎正确居中,但是当我拖动它时,球不会停留在圆周上并且似乎在任何地方.


编辑

Martin R的答案现在按要求显示.我唯一的额外代码更改是删除不必要的声明var shapeLayer = CAShapeLayer()

在此输入图像描述


在我尝试将球和轨迹都限制在视图中心并将球的中心坐标作为偏移量添加到运行时之前,这个例子中的数学非常有意义.我遵循了有关如何约束视图的这些建议.

有三件事我不明白.

首先,从两个变量计算圆的周长trackRadius和角度theta,并使用sincostheta发现xy坐标不会把球在合适的位置.

其次,atan用于找到theta视图中心与被触摸点之间的角度,并使用trackRadiuswith theta来查找xy坐标不会将球放置或沿圆周移动到新的位置.

第三,每当我拖动球时,调试区域中的消息都会显示Xcode is Unable to simultaneously satisfy constraints,尽管在拖动之前没有报告任何约束问题.

这里可能存在多个问题.我的大脑开始受到伤害,如果有人能够指出我做错了什么,我将不胜感激.

这是我的代码.

import UIKit

class ViewController: UIViewController {

override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .all }
var shapeLayer                      = CAShapeLayer()
let track                           = ShapeView()
var ball                            = ShapeView() …
Run Code Online (Sandbox Code Playgroud)

uiview ios uipangesturerecognizer autolayout swift

6
推荐指数
1
解决办法
181
查看次数

如果我们在真正的预提交处理程序中,由于CA限制,我们实际上无法添加任何新的围栏 - 这可能意味着什么吗?

我试图找到为什么自定义UIButton集合不起作用.在我之前的文章中描述的版本中,我Swift 3中以编程方式创建了一个UIButton圆圈,并将圆圈固定在屏幕的中心.该版本使用了UIView的子类 - 基于Apple Swift教程(实现Button Action) - 以及利用Imanou Petit优秀代码示例(No.6 Anchor)的autolayout实现.在那个版本中,我设法让我的按钮在iPhone旋转时成功旋转,但按钮动作目标无法工作.

所以我现在尝试使用viewcontroller而不是UIView的子类的替代版本.这次相同的按钮动作目标有效,但旋转手机会使图像偏离中心,如下所示.

在此输入图像描述

每次旋转时,以下消息也会在Xcode的调试区域中出现两次.

    ***[App] if we're in the real pre-commit handler we can't 
    actually add any new fences due to CA restriction***
Run Code Online (Sandbox Code Playgroud)

该消息在四个中发生三次,即当手机上下颠倒时没有消息.当我运行上一篇文章中的代码或下面显示代码时,会发生这种情况.并且在每种情况下,"倒置"框是否已选中或未选中都没有区别.

在此输入图像描述 我也试过禁用OS_ACTIVITY MODE但除了隐藏可能解释问题的消息之外什么都没改变.更有经验的人比我有希望认识一下这个调试消息无论是在我以前的代码(上下文意思此处所示)或我最新的代码,如下图所示.

原始代码

import UIKit

class ViewController: UIViewController {

// MARK: Initialization

let points: Int             = 10    // 80 25 …
Run Code Online (Sandbox Code Playgroud)

iphone uibutton uiview autolayout swift

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

如何使用%作为Swift 3中的后缀一元运算符来计算百分比,并且仍然可以使用%作为模数?

我将%令牌声明为后置修复操作符,以便计算百分比但Xcode报告

`% is not a postfix unary operator` 
Run Code Online (Sandbox Code Playgroud)

我的测试代码下面是基于发现的例子在这里.我还检查了Apple的最新文档,其中包含了操作员声明语法,但它没有解释为什么Xcode会抱怨.

如何计算使用百分比%?假设我让它工作,那么我将如何恢复使用%同一类中其他地方的另一个函数的模运算?

有人可以根据我在Playground中的代码提供一个工作示例吗?

1.%含义百分比

postfix operator %

var percentage = 25%

postfix func % (percentage: Int) -> Double {
    return (Double(percentage) / 100)
}
Run Code Online (Sandbox Code Playgroud)

2.%表示余数

let number = 11
let divisor = 7

print(number % divisor)
Run Code Online (Sandbox Code Playgroud)

ios swift

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

为什么我的Xcode 6.1.1模拟器选项都消失了?

我最近尝试在访问印度尼西亚期间使用我的MacBook Pro在Xcode 6.1.1上运行新的iOS 7应用程序模拟.该应用程序基于AddMusic并使iOS 7兼容.当我试图在国外运行模拟器时,在澳大利亚测试时可用的iOS模拟目标已经从Xcode的下拉菜单中消失了.此外,自从我回到家后,这些模拟器仅在我移除,下载并重新安装Xcode时才重新出现.

在我重新安装Xcode之前,Xcode提供的唯一选择是在iOS设备上运行应用程序,但我没有准备在客户面前执行此操作,而无需先在模拟器上测试修订版本.

值得庆幸的是,在我离开家之前,我能够演示我在iPhone 4和iPhone 5 C上安装的早期版本.但是,在我下次出国访问期间,了解我可以做些什么来避免这种情况真的很好.

我怀疑这个问题可能是由我国内外的互联网连接之间的差异引起的.

有没有其他人遇到过可能相关的类似问题?

xcode ios

4
推荐指数
1
解决办法
1710
查看次数

成员运算符'%'必须至少有一个类型为'ViewController'的参数

我正在尝试创建一个简单的Swift 3模板,其中包含一个自定义函数,用于在Xcode应用程序中使用postfix一元运算符计算百分比.这似乎是一个重复的问题,因为我之前的帖子中已接受的答案已经显示了如何在Playground中执行此操作.但我后来发现自定义函数在Xcode项目中的工作方式不同.

下面的模板,我宣布了’operator' at file scope(或者至少我相信我做过).但是当声明后缀函数时,Xcode建议这样做

    Operator '%' declared in type 'ViewController' must be 'static' 
Run Code Online (Sandbox Code Playgroud)

并提供一个修复它插入static.随着static然后插入Xcode的建议

    Member operator '%' must have at least one argument of type 'ViewController’.
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么%函数需要static在Xcode项目中以及最后一条错误消息在同一行的上下文中意味着什么(见下文)?谢谢

草稿模板

import UIKit

postfix operator %

class ViewController: UIViewController {

var percentage = Double()

override func viewDidLoad() {
    super.viewDidLoad()

    percentage = 25%
    print(percentage)
    }

static postfix func % (percentage: Int) -> Double { …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift swift3

4
推荐指数
1
解决办法
1209
查看次数

如何从同一个Swift项目中的任何文件访问自定义函数?

如果在文件范围声明了自定义函数的后缀运算符 - 就像我在一篇文章中那样 - 必须有一种方法可以从同一个Xcode项目中的另一个Swift 3文件访问这样的函数.

Apple关于自定义函数的文档声明" 新运算符在全局级别声明...... "因此我可以假设Swift 3的创建者认为对全局访问自定义函数很重要.但是对于Swift的新手来说,如何做到这一点并不是不言而喻的.

基于我之前接受的答案中的代码(这里)我需要做什么才能从项目中其他地方的另一个文件访问自定义函数?


最终编辑

解决方案非常简单(参见接受的答案),希望其他Swift新手也可能觉得它很有用.

一个postfix operator %全局声明的同时ExtensionInt读取Int其他文件的变量.的扩展DoubleCGFloat以及Int也是可能的.

CustomOperators.swift

import UIKit

postfix operator %

extension Double {
    static postfix func % (n: Double) -> Double {
     return Double(n) /  100
    }
}

extension Int {
    static postfix func % (n: Int) -> Double {
        return Double(n) /  100
    } …
Run Code Online (Sandbox Code Playgroud)

swift swift3

4
推荐指数
1
解决办法
2172
查看次数

如何在 bash 中修剪字符串变量

我有最初包含不同目录路径的字符串,其中第二个和最后第二个子目录的长度可以不同,如下所示

 /home/Leo/Work/CMI/ARCH/MWS/Disks
 /home/Cleo/Work/CMI/ARCH/BK/Disks
Run Code Online (Sandbox Code Playgroud)

我想修剪前 5 个子目录,只显示最后 2 个,就像这样

 echo "/MWS/Disks"
 echo "/BK/Disks"
Run Code Online (Sandbox Code Playgroud)

从初始字符串中修剪前 5 个子目录的一种方法可能是将每个字符左移,直到两个字符串都以倒数第二个“/”开头。

Bash初学者指南描述了一种shift built-in左移命令中的位置参数并丢弃未使用的参数的方法。但是否可以使用此方法从上述字符串中删除前 5 个子目录还不是很明显。

在 Bash 中,如何减少这些字符串,最好不使用循环?


澄清

从评论来看,需要更多的背景信息。我的 Bash 脚本从 8 英寸软盘映像中恢复历史 Mdos 和 Qdos 文件,并将文件保存到硬盘驱动器上的目录中。

无论好坏,我创建了一个定制方案,使用 3 字符变量名称存储目录路径,其中每个名称都是当前目录路径部分的首字母缩写词。

例如以下路径中MWC的缩写$MY/Work/CMI

MY="$USER"
MWC="C:/cygwin64/home/$MY/Work/CMI"
cd "$MWC"
pwd
C:/cygwin64/home/$MY/Work/CMI
Run Code Online (Sandbox Code Playgroud)

同样,3 字符变量指向树上的下一个子目录

WCA="$MWC/ARCH"
Run Code Online (Sandbox Code Playgroud)

C:/cygwin64/home/$MY/Work/CMI/ARCH,档案所有者画廊的路径。

由于目录路径加长了 3 个字符的变量,因此可以通过保留列表中的空白来轻松识别路径。尽管如此,每当我的脚本引用路径时,就会出现完整路径。因此需要修剪最终用户不感兴趣的字符串部分。

linux bash

3
推荐指数
1
解决办法
3486
查看次数

我可以在Swift闭包中使用多个分隔符拆分数字字符串吗?

我有一个带小数和十进制数的字符串数组.

    let stringArray = [ "0.0", "193.16", "5/4", "503.42", "696.58", "25/16", "1082.89", "2/1"]
Run Code Online (Sandbox Code Playgroud)

每个数组元素都映射到一个闭包中,其中从字符串中提取数字.

    let values = stringArray.map { s -> Double in
Run Code Online (Sandbox Code Playgroud)

分数(见前文)

    let splitStrings = s.characters.split(separator: "/").map(String.init).map({ Double($0) })
Run Code Online (Sandbox Code Playgroud)

或小数

    let splitStrings = s.characters.split(separator: ".").map(String.init).map({ Double($0) })
Run Code Online (Sandbox Code Playgroud)

问题:在Swift中是否有一种方法可以使用多个分隔符拆分字符串,因此单个闭包可以返回小数值或小数值?

(继续关闭)

switch (token)) {
case "/"  :
        print( "fraction")

        let pathA = splitString[0]!/splitString[1]!
        return pathA

case "."  :
        print( "decimal")

        let upperSplit = splitString[0]!
        let lowerSplit = splitString[1]! * 0.1  // restore decimal point
        let pathB = …
Run Code Online (Sandbox Code Playgroud)

arrays closures ios swift

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

如何在Swift中访问2D数组中的元素

我想从一个单一的阵列读取字符串变量(或更精确地从字符串数组的数组,因为在接受的答案澄清)的斯威夫特.以下内容读取整个数组.

    var array = [["W", "X", "Y", "Z"], ["A", "B", "C", "D"]]
    print(array[0],array[1])
Run Code Online (Sandbox Code Playgroud)

如何读取一对变量,例如"X"和"D"?

arrays swift

0
推荐指数
2
解决办法
5024
查看次数

为什么Bundle.main.path(forResource:fileName,ofType:"txt")总是返回nil?

我想逐行阅读文本文件,并使用此处显示的示例在iOS屏幕上显示它.

制作textView.text可选项是我能够readDataFromFile运行的唯一方式.当我单击load该函数运行但总是返回nil.我认为这意味着找不到文件.

出于测试目的,我在Xcode中创建了文本文件.我也尝试将它保存在桌面和项目文件夹中.无论哪种方式,它都可以从项目导航器中读取.我还尝试使用TextEdit创建文件,因为应用程序最终需要读取在Xcode外部创建的文本文件.

如果有人可以解释为什么永远不会找到文本文件,我是否感激不已,为了让项目找到它还是需要做些什么,或者nil由于我的方式而导致读取函数由于其他原因而返回实施了它.谢谢.

编辑(2)

感谢您的反馈.作为回应,我做了四个小的代码更改,允许将文本文件内容写入textView.更改包括:从文件名中删除文件扩展名,添加文件名数组,String而不是String?从代码中返回readDataFromFile和重写UITextView.这解决了我所知道的问题.

这是修改后的代码

import UIKit

class ViewController: UIViewController {

var textView = UITextView()
var arrayOfStrings: [String]?
var fileNameWithExtension               = "textFile.txt"
let arrayOfFileNames                    = ["textFile1.txt", "textFile2.txt", "textFile3.txt", "textFile4.txt", "textFile5.txt"]

var fileName                            = String()

override func viewDidLoad() {
    super.viewDidLoad()

    //    remove comment in the next statement to test files named in ArrayOfFileNames    
    //    fileNameWithExtension               = …
Run Code Online (Sandbox Code Playgroud)

uitextview ios swift

0
推荐指数
1
解决办法
4770
查看次数