NSMetadataItemSwift下的Cocoa框架中的类包含以下函数:
func valueForAttribute(key: String!) -> AnyObject!
我还在学习强制解包和可选链接之间的区别(和细节).在上面的函数中,这是否意味着:
该key参数必须有一个值,
返回值保证有值吗?
我主要关注的是返回值后面的感叹号 - 一旦我分配了返回值:
var isDownloadedVal = item.valueForAttribute(NSMetadataUbiquitousItemIsDownloadedKey)
Run Code Online (Sandbox Code Playgroud)
我if let在检查时是否需要包含一个块,或者我保证它具有我可以安全检查的值吗?
我正在尝试为Swift Int类型编写一个扩展来保存嵌套min()/max()函数.它看起来像这样:
extension Int {
func bound(minVal: Int, maxVal: Int) -> Int {
let highBounded = min(self, maxVal)
return max(minVal, highBounded)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在分配/计算时出现编译错误highBounded:
IntExtensions.swift:13:25: 'Int' does not have a member named 'min'
为什么标准库定义的函数没有正确定位?

我的iPad应用程序中有一个主/细节分割视图配置.如果我从左侧滑动(或者实际上,只是在详细视图中向右滑动,无论我是否从屏幕的左边缘开始),它都会滑动打开主视图.
这里的问题是我的详细视图是一个MKMapView,所以如果我把手指放在地图上并向右移动手指(向左平移),主视图就会打开!我必须开始向另一个方向拖动我的手指,然后向右走,正确平移.
这种行为可以改变:
因此它被完全禁用(仅允许从后退按钮打开主视图)
因此,它仅影响详细视图中不在地图上的滑动
因此,只有在滑动从屏幕边缘开始时才触发
谢谢!
在Java中,编写以下设计非常容易:
public abstract class Pizza {
public static final Pizza.NULL = new Pizza() {
/* "null" implementations */
}
/* actual/abstract implmentations */
}
Run Code Online (Sandbox Code Playgroud)
在Objective-C中获得相同效率场景的首选方法是什么?我一直无法找到关于这个主题的任何文档,我尝试了几个不同的场景static const,#define等等,但它们似乎都没有像上面的Java方法那样成功.
我想避免编写一个具有静态方法来获取单例实例的具体NullPizza类,因为它似乎更适合它作为最高级别接口的最终属性/字段.(披萨,在这种情况下.)
编辑:虽然我理解如何处理NULL模式由于Obj-C处理'nil'方法调用的独特方法,那么其他静态公共实例如Response.YES和Response.NO呢?(请参阅评论以供讨论.)
我有一个简单的Python脚本,询问你的名字,然后吐出来:
def main():
print('Enter your name: ')
for line in sys.stdin:
print 'You entered: ' + line
Run Code Online (Sandbox Code Playgroud)
非常简单的东西!在OS X终端中运行时,它运行良好:
$ python nameTest.py
Enter your name:
Craig^D
You entered: Craig
Run Code Online (Sandbox Code Playgroud)
但是,当尝试通过a运行此过程时NSTask,只有在Python脚本中添加了额外的flush()调用时才会出现stdout.
这就是我NSTask配置和配管的方式:
NSTask *_currentTask = [[NSTask alloc] init];
_currentTask.launchPath = @"/usr/bin/python";
_currentTask.arguments = [NSArray arrayWithObject:@"nameTest.py"];
NSPipe *pipe = [[NSPipe alloc] init];
_currentTask.standardOutput = pipe;
_currentTask.standardError = pipe;
dispatch_queue_t stdout_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
__block dispatch_block_t checkBlock;
checkBlock = ^{
NSData *readData = [[pipe fileHandleForReading] availableData];
NSString *consoleOutput …Run Code Online (Sandbox Code Playgroud) 我更新了我的一个核心框架,以使用Swift作为实验.它构建良好,兼容性头具有可用于依赖于它们的Objective-C类的Swift类,并且一切编译都很好.
但是,在启动应用程序(基本SDK和部署目标OS X 10.10)时,它会立即崩溃:
dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
Referenced from: /Users/Craig/Library/Developer/Xcode/DerivedData/MacApp-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/Fluffy.framework/Versions/A/Fluffy
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
请注意,这MacApp是我正在启动的应用程序,它使用Fluffy包含Swift代码的框架.
该Fluffy项目的目标Runpath Search Paths是:
@executable_path/Frameworks
但我也尝试过空白.我试过重启Xcode,但无济于事.使用Yosemite 14A298i和Xcode beta 4.
我有一个方法,它返回一个属性的平均值超过许多模型对象:
List<Activity> activities = ...;
double effortSum = 0;
double effortCount = 0;
activities.stream().forEach(a -> {
double effort = a.getEffort();
if (effort != Activity.NULL) {
effortCount++; < Compilation error, local variable
effortSum += effort; < Compilation error, local variable
}
});
Run Code Online (Sandbox Code Playgroud)
但是,如上所述,上述尝试无法编译.我遇到的唯一解决方案是使用AtomicReference一个Double对象,但这看起来很苛刻,并且会给应该是一个简单的操作带来大量的混淆.(或者加入番石榴并获得AtomicDouble,但是得出了同样的结论.)
是否有使用新Java 8循环修改局部变量的"最佳实践"策略?
活动的相关代码:
public class Activity {
public static final double NULL = Double.MIN_VALUE;
private double effort = NULL;
public void setEffort(double effort) { this.effort = effort; }
public double …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring 3.1.4,并尝试使用MockMvc围绕我们的身份验证编写一些集成测试.
我遇到的一个根本问题是,因为我没有使用Spring 3.2,所以我不能在我的测试中@Autowire使用WebApplicationContext对象,因此无法使用MockMvcBuilders.webApplicationContextSetup(),所以我正在使用它xmlConfigSetup.
我似乎已经遇到了多条叉子的路径,这两条叉子都没有解决我的所有问题.
我有这样的配置:
@ContextConfiguration(locations = {
"classpath:/test-applicationContext.security.xml",
"classpath:/test-mvc-dispatcher-servlet.xml"
})
@RunWith(SpringJUnit4ClassRunner.class)
public class SecurityTests extends AbstractJUnit4SpringContextTests {
public static final String[] CONTEXT_CONFIG = {
"classpath:/test-applicationContext.security.xml", "classpath:/test-mvc-dispatcher-servlet.xml"
};
@Autowired
private Filter springSecurityFilterChain;
@Before
public void setUp() {
ContextMockMvcBuilder xmlConfigSetup = MockMvcBuilders.xmlConfigSetup(CONTEXT_CONFIG);
this.mockMvc = xmlConfigSetup.addFilters(springSecurityFilterChain).build();
}
Run Code Online (Sandbox Code Playgroud)
这里的优点是我springSecurityFilterChain的@Autowired,易于提供addFilters().的缺点是,任何其他自动装配豆是不同的情况下比我MockMvc配置的,因为我基本上是建设我servlet上下文的两倍.这意味着如果我UserDetailsService在集成测试中自动调整并调整它(添加用户"bob"),则MockMvc实例没有它.
选项1:使用上面的配置,我可以访问MockMvc实例中的任何bean吗?我还没有找到一种方法,这使得任何集成测试都无法"准备".
选项2:删除@ContextConfiguration并让MockMvc驱动测试.这看起来更干净,但我无法弄清楚如何创建/注入Spring Security过滤器链 - 因为它不再是自动装配的.(我的bean都没有 - …
说我有一个简单的Ingredient类:
class Ingredient {
let section : String // 'Produce', 'Spices', 'Dairy', 'Grains'
}
Run Code Online (Sandbox Code Playgroud)
我有一堆Ingredient物品:
var ingredients : [Ingredient] = ...
Run Code Online (Sandbox Code Playgroud)
我想从这些成分中收集不同部分的数量.
我可以在Java中通过(依赖于Set类型的自动聚集)来做到这一点:
ingredients.stream().map(Ingredient::getSection).collect(Collectors.toSet()).count()
Run Code Online (Sandbox Code Playgroud)
或者,使用distinct()方法:
ingredients.stream().map(Ingredient::getSection).distinct().count()
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种方法在Swift中做一个类似的单线程.我做过的一些研究表明人们编写自己的方法来收集不同的值,但我希望有一个distinct()或者Set收集Swift类型的方法.
我是Docker的新手,但是有一个Java Web应用程序项目,我的Maven构建为此项目生成并安装Docker映像。即
mvn clean install
Run Code Online (Sandbox Code Playgroud)
产生:
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.gitlab.com/me/myapp 0.0.1-SNAPSHOT-dev 12d69e5ab28b 45 minutes ago 666 MB
Run Code Online (Sandbox Code Playgroud)
我正在使用Spotify的Maven插件来构建它,然后可以使用以下命令将其部署到存储库中:
mvn docker:push
Run Code Online (Sandbox Code Playgroud)
哪个很棒。但是:我使用的是GitLab for CI,我的.gitlab-ci.yml文件包含:
image: maven:3.3.9-jdk-8
build:
script: "mvn clean install && mvn docker:push"
Run Code Online (Sandbox Code Playgroud)
这几乎可以工作,但是失败了,因为没有在运行该构建的容器中安装Docker :
[INFO] Building image registry.gitlab.com/me/myapp
Dec 31, 2016 8:30:45 PM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: No such file or directory
Dec 31, 2016 8:30:45 PM org.apache.http.impl.execchain.RetryExec execute
INFO: …Run Code Online (Sandbox Code Playgroud)