我对某些代码感到有些困惑:
for (AbstractItem item : mSetOfItems) {
if (item.equals(pPrimaryItem))
{
System.out.println("Contains? " + mSetOfItems.contains(pPrimaryItem));
}
}
Run Code Online (Sandbox Code Playgroud)
如何将item.equals(pPrimaryItem)解析为true,并将mSetOfItems.contains(pPrimaryItem)解析为false?因为这就是我在代码中看到的内容.
换句话说,如果我遍历我的集合,我可以找到一个等于我的test元素的元素.但是如果我使用contains,我的测试元素不会被报告在集合中.我很困惑,因为我认为包含使用的等于.我能俯瞰什么?
对于散列哈希数组和自然排序有可行的答案,但是同时进行这两种操作的最佳方法是什么?
my_array = [ {"id":"some-server-1","foo":"bar"},{"id":"some-server-2","foo":"bat"},{"id":"some-server-10","foo":"baz"} ]
Run Code Online (Sandbox Code Playgroud)
我想对"id"进行排序,以便最终的排序是:
some-server-1
some-server-2
some-server-10
Run Code Online (Sandbox Code Playgroud)
我觉得必须有一个聪明有效的方法来做到这一点,虽然我个人不需要打破任何速度记录,只会排序几百项.我可以在sort_by中实现比较功能吗?
我知道通过使用类别来覆盖方法是一种沮丧的做法.尽管如此,我还是要处理一些执行此操作的代码.当我运行以下代码时,我最初感到惊讶的是,在两种情况下都调用了我的类别方法,尽管考虑链接器必须如何在链接时为任何给定符号做出决定让我感觉更好.
我的问题:假设除了我创建的类别之外没有其他类别可用,我保证我的类别中的实现将始终是被调用的逻辑,只要它的标题是从某个地方导入的吗?
someObject.h
#import <Foundation/Foundation.h>
@interface SomeObject : NSObject
- (void)doSomething;
@end
Run Code Online (Sandbox Code Playgroud)
someObject.m
#import "SomeObject.h"
@implementation SomeObject
- (void)doSomething
{
NSLog(@"Original");
}
@end
Run Code Online (Sandbox Code Playgroud)
someObject + Cat.h
#import <Foundation/Foundation.h>
#import "SomeObject.h"
@interface SomeObject (SomeObject)
- (void)doSomething;
@end
Run Code Online (Sandbox Code Playgroud)
someObject + Cat.m
#import "SomeObject+Cat.h"
@implementation SomeObject (SomeObject)
- (void)doSomething
{
NSLog(@"New!");
}
@end
Run Code Online (Sandbox Code Playgroud)
someObjectUser.h
#import <Foundation/Foundation.h>
@interface SomeObjectUser : NSObject
- (void)useSomeObject;
@end
Run Code Online (Sandbox Code Playgroud)
someObjectUser.m
#import "SomeObjectUser.h"
#import "SomeObject.h"
@implementation SomeObjectUser
- (void)useSomeObject
{
[[SomeObject new] doSomething];
}
@end
Run Code Online (Sandbox Code Playgroud)
Test.m
- (void)testExample
{
[[SomeObject …Run Code Online (Sandbox Code Playgroud) 当我将NSInvocation的返回值设置为NSString时,调用者正在接收NSCFString.
在我的情况下,我嘲笑从单元测试包含的文件中拉出一个包路径:
[[[_bundlePartial stub] andDo:^(NSInvocation *invocation) {
NSString* resourceName = [invocation getArgumentAtIndexAsObject:2];
NSString* type = [invocation getArgumentAtIndexAsObject:3];
NSString* path = [[NSBundle bundleForClass:self.class] pathForResource:resourceName ofType:type];
if (!path)
{
path = [_bundleOriginal pathForResource:resourceName ofType:type];
}
[invocation setReturnValue:(void*)path];
}] pathForResource:OCMOCK_ANY ofType:OCMOCK_ANY];
Run Code Online (Sandbox Code Playgroud)
我称之为:
NSString* jsonPathInBundle = [[NSBundle mainBundle] pathForResource:self.fileName ofType:self.fileExtension];
Run Code Online (Sandbox Code Playgroud)
不幸的是我回来了NSCFString.这是有道理的,因为我的NSString由NSCFString支持,但是当我丢失桥时,我不能再在对象上调用NSString实例方法.有没有办法可以将值作为NSString返回?
xcodebuild 帮助说:
细化:字符串
对于非 App Store 导出,Xcode 是否应该针对一种或多种设备变体精简包?可用选项:<none>(Xcode 生成非精简通用应用程序)、<thin-for-all-variants>(Xcode 生成通用应用程序和所有可用精简变体)或特定设备的型号标识符(例如“ iPhone7,1")。默认为<无>。
目前还不清楚这是否是字面意思:
<key>thinning</key>
<string><none></string>
Run Code Online (Sandbox Code Playgroud)
但在我的企业构建中,我仍然看到这个阶段发生:
2017-03-08 13:39:32.486 xcodebuild[43633:2535491] [MT] IDEDistribution: Step failed: <IDEDistributionThinningStep: 0x7fd756bef4e0>: Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo={NSLocalizedDescription=No applicable devices found.}
Run Code Online (Sandbox Code Playgroud)
网上没有关于此设置的详细文档或信息。有谁明确知道要使用什么值?
虽然可以使用系统事件来模拟命令转换 - 在Safari中更改窗口,但使用AppleScript是否有更好的方法可以做到这一点?我可以更改Safari窗口的索引,这会改变它们在屏幕上的顺序但不会使它们处于活动状态.假设您有两个Safari窗口,其中包含以下内容:空白 - 您如何将后面的那个带到前面并使其处于活动状态?
当然,命令转换 - 工作,所以也许只需要一种方法来剥离这只猫.
我不能说我理解错误消息。
bash_prompt% sed -e '/__SUBSTITUTE_HERE__/ {r tmp.txt d}' < myFile.txt
sed: 2: "/__SUBSTITUTE_HERE__/ { ...": unexpected EOF (pending }'s)
Run Code Online (Sandbox Code Playgroud)
我使用的是 OSX 10.7.4(Darwin 内核版本 11.4.0)
目标是用 bash 脚本中的另一个文件的内容替换一个文件中的令牌。
我用这样的Objectify保存了一个对象:
Thing th = new Thing();
th.identifier = thingId;
th.name = thingName;
th.json = thingData;
ofy().save().entity(thing);
pResponse.setStatus(200);
pResponse.getWriter().println("OK");
Run Code Online (Sandbox Code Playgroud)
我使用GAE数据存储浏览器验证数据库中的值是否已更新.我在当地跑步.然后我加载所有这样的东西:
Map<String, List<Thing>> responseJsonMap = new HashMap<String, List<Thing>>();
List<Thing> things = ofy().load().type(Thing.class).list();
responseJsonMap.put("things", things);
pResponse.setContentType("application/json");
try {
GSON.toJson(responseJsonMap, pResponse.getWriter());
} ...
Run Code Online (Sandbox Code Playgroud)
我得到的是保存之前存在的数据.我试过在实体和调用上关闭缓存ofy().clear()但是都没有工作.如果我重新启动服务器或等待足够长的时间,保存的数据就会通过.我还尝试.now()在保存后添加,但没有必要,因为我可以在数据存储区中验证操作已完成.我真的希望能够加载我刚刚保存的数据.我究竟做错了什么?
我有一个包含UITableView的视图.在视图上加载时,我将表的tableFooterView设置为我手动创建的视图(包含按钮的UIView).当视图出现时,我调整tableFooterView的框架:
CGRect tableFrame = self.myTableView.frame;
CGRect originalFrame = self.tableFooter.frame;
CGSize imageSize = CGSizeMake(40.0f, 40.0f);
CGRect footerFrame = CGRectMake(originalFrame.origin.x, originalFrame.origin.y, tableFrame.size.width, imageSize.height);
self.tableFooter.frame = footerFrame;
CGRect nextFrame = CGRectMake((footerFrame.size.width - imageSize.width) / 2.0f, 0.0f, imageSize.width, imageSize.height);
self.tableFooterButton.frame = nextFrame;
Run Code Online (Sandbox Code Playgroud)
在iOS7上,这可以按我想要的方式工作 - 当我滚动到表格的底部时,我会看到我的页脚视图.在iOS6上,当我滚动到表格的底部时,页脚视图仍然在屏幕外(我可以拉动滚动视图并查看它,但是当我发布时它会在屏幕外重置).
我该怎么办?
iOS 8.我将呈现一个具有演示风格的视图控制器:UIModalPresentationOverCurrentContext.这很有效,直到我旋转我的设备,此时显示的视图没有正确调整.
示例:我介绍了一个肖像上下文.我的新视图覆盖整个屏幕(具有半透明度).我转向风景.呈现的视图旋转,但现在居中并保持纵向宽度.
呈现VC和呈现视图都是使用自动布局在故事板中创建的.因为我不能在VC的最顶层视图中添加约束(对吗?)我不知道如何保持我的呈现视图完全覆盖它下面的视图.
ios ×2
objective-c ×2
applescript ×1
cocoa-touch ×1
ios8 ×1
java ×1
macos ×1
methods ×1
natural-sort ×1
nsinvocation ×1
nsstring ×1
objectify ×1
ocmock ×1
overriding ×1
ruby ×1
sed ×1
uitableview ×1
xcode ×1
xcodebuild ×1