我有一个包含多个目标的Xcode项目.让我们说目标名称是AppFreeVersion和AppPaidVersion.它们共享相同的代码库,但我想实现一些仅适用于其中一个目标的逻辑.
如果不修改我的方案或构建设置,有没有办法获取我当前目标名称的字符串?这个问题中给出的解决方案要求我在构建设置中传递一个环境变量,我不想这样做.
我在scala中有一个名为l:List [AType]的列表,我想将其更改为list [String].
这可能听起来像一个非常肮脏,低效的方法,但我不太确定这样做的最好方法.我的代码是:
var result = new Array[String]("a","b")
l foreach { case a => result = result :+ (a.toString().toUpperCase()); }
result toList
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是我的错误所在,因为它没有给我任何东西,即使我在循环中放置一个print语句也不打印任何东西.
所以我决定将其更改为更为迫切的方式:
for(i <- 0 to l.length) {
result.update(i, l(i).toString)
}
Run Code Online (Sandbox Code Playgroud)
这次我看到在循环中打印时我想看到的东西,但最后程序因IndexOutOfBound错误而崩溃.
有没有更有效和更好的方法来做到这一点?
谢谢!
我在scala中有一个类型为[T]和[B]的列表,其对象e为E类型.
我想创建一个接受这三个参数的函数:
def doSomething(t : List[T], b List[B], e : E) {
... }
Run Code Online (Sandbox Code Playgroud)
但是我意识到List是不可变的,传递给函数的任何东西都被认为是val(不是var).但我需要修改t和b并将修改返回给函数的调用者.有谁知道怎么做?
我无法将列表更改为数组...因为我一直在使用它,文件太大了..
我最近一直在玩Letterpress.
游戏的目的是通过在棋盘上用字母制作单词来尽可能多地获得蓝色瓷砖.当你弹奏你的单词时,除非字母被红色瓷砖包围,否则组成单词的字母将变为蓝色.
常规的Letterpress板看起来像这样:

我意识到棋盘上的字母必须用某种规则生成,否则用一些棋盘玩游戏真的很难.我只能想到必须有多个元音的规则.我想知道是否还有其他规则.
另外,我想知道这是否与生成Boggle骰子类似.
我注册了我自己的位置经理来监控和范围几个信标:
[self.locationManager startMonitoringForRegion:region];
[self.locationManager startRangingBeaconsInRegion:region];
Run Code Online (Sandbox Code Playgroud)
我的理解是,当找到一个或多个信标时,会调用此委托方法:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
Run Code Online (Sandbox Code Playgroud)
当我打开我的信标时,确实调用了这个委托方法,但是信标数组是空的.我的灯塔没有列在那个数组中有什么理由吗?
这是一个截图来说明这种情况:

didEnterRegion:或didDetermineState:被叫,但这仍然导致相同的事情.[self.locationManager requestWhenInUseAuthorization];.NSLocationWhenInUseUsageDescription在我的plist中添加了键.在Swift中,有一个if let用于解包选项的常见模式:
if let value = optional {
print("value is now unwrapped: \(value)")
}
Run Code Online (Sandbox Code Playgroud)
我目前正在进行这种模式匹配,但在切换情况下使用元组,其中两个参数都是可选项:
//url is optional here
switch (year, url) {
case (1990...2015, let unwrappedUrl):
print("Current year is \(year), go to: \(unwrappedUrl)")
}
Run Code Online (Sandbox Code Playgroud)
但是,这打印:
"Current year is 2000, go to Optional(www.google.com)"
Run Code Online (Sandbox Code Playgroud)
我有没有办法解开我的可选和模式匹配,只有它不是零?目前我的解决方法是:
switch (year, url) {
case (1990...2015, let unwrappedUrl) where unwrappedUrl != nil:
print("Current year is \(year), go to: \(unwrappedUrl!)")
}
Run Code Online (Sandbox Code Playgroud) [NSLocale preferredLanguages]根据文件定义:
用户的语言首选项顺序为NSString对象数组,每个对象都是一个规范化的IETF BCP 47语言标识符.
定义[[NSBundle mainBundle] preferredLocalizations]:
NSString对象的数组,每个对象标识接收器包中的本地化.语言按首选顺序排列.
我真的没有得到什么区别.应该使用哪一个?
我知道如何通过执行以下操作来更改导航栏(和状态栏)的颜色:
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)
但是当我隐藏导航栏时,状态栏颜色将恢复为透明色.
即使导航栏被隐藏,如何使状态栏颜色与barTintColor保持一致?
在Xcode 6中的视图中创建约束时,我注意到这个" 约束到边距 "框,默认情况下勾选:

保持这个框被勾选的结果是我的应用程序将在除iPhone 6 Plus之外的所有iPhone上正常运行,其中我将在视图的左侧和右侧具有一些边距:

我试着查看Apple的文档,但可能不够难.Xcode 6及以上版本的保证金是多少?为什么边距仅在侧面而不在顶部/底部?为什么只有iPhone 6 Plus有此保证金?为什么不用iPhone 6等?这些边距是否记录在某处?