我正在寻找一种方法将XML文件的内容直接加载到Javascript变量中.假设我有以下目录结构:
/index.html
/loader.js
/file.xml
Run Code Online (Sandbox Code Playgroud)
在index.html,有一个<body>标记,其内容应替换为XML文件的内容.因此,如果XML文件包含:
<element>
<item>Item One</item>
<item>Item Two</item>
</element>
Run Code Online (Sandbox Code Playgroud)
然后在动态加载后,HTML将是:
...
<body>
<element>
...
</element>
</body>
...
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以使用什么功能loader.js将内容直接加载到变量中?我使用过XmlHttpRequests和ActiveX XMLDOM解析器,但所有这些只是给我一个结构数据模型,然后我必须通过它来查找我的元素.我不需要解析任何东西,我只想获取所有文件内容.
注意:仅限HTML/Javascript,没有服务器端代码.
我有一个URL字符串,其末尾附加了变量,如下所示:
.../create?title=My Apartment
Run Code Online (Sandbox Code Playgroud)
我想逃避任何无效的字符(如空格),但是当我尝试这样做时,我使用以下方法在模拟器和我的设备(iOS 8.0)上崩溃:
NSLog("Item1: \(item)")
NSLog("Item2: \(item.title)")
if let scrubbed = item.title.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet()) {
NSLog("Scrubbed: \(scrubbed)")
} else {
NSLog("Nope!")
}
Run Code Online (Sandbox Code Playgroud)
我在模拟器上看到的是:
2014-09-24 16:59:19.120 MyApp[16406:171349] Item1: MyApp.PostItem
2014-09-24 16:59:19.121 MyApp[16406:171349] Item2: My Apartment
2014-09-24 16:59:19.125 MyApp[16406:171349] Scrubbed: My 0X0P+0partment
Run Code Online (Sandbox Code Playgroud)
注意那个擦洗字符串的奇怪之处.一段时间后,它崩溃抱怨一个构造不良的NSURL物体,毫不奇怪.
当我在我的设备上运行它时,我EXC_BAD_ACCESS在NSLog()试图打印的声明中崩溃了Scrubbed:
2014-09-24 17:04:37.378 MyApp[4346:2048259] Item1: MyApp.PostItem
2014-09-24 17:04:37.379 MyApp[4346:2048259] Item2: My Apartment
(lldb) po scrubbed
error: <EXPR>:1:1: error: non-nominal type '$__lldb_context' cannot be extended …Run Code Online (Sandbox Code Playgroud) 我正在计算提供的Java字符串中可感知的表情符号字符的数量。我目前正在使用emoji4j库,但不适用于像这样的字素簇:???
调用EmojiUtil.getLength("???")return 4代替1,类似地调用EmojiUtil.getLength("???")return 5代替2。
StringJava中是否有任何API或方法可以简化字素簇的计数?
我一直在寻找,但可以理解的是codePoints(),a上的方法String不仅包括可见的表情符号,还包括零宽度的连接符。
我也尝试使用BreakIterator:
public static int getLength(String emoji) {
BreakIterator it = BreakIterator.getCharacterInstance();
it.setText(emoji);
int emojiCount = 0;
while (it.next() != BreakIterator.DONE) {
emojiCount++;
}
return emojiCount;
}
Run Code Online (Sandbox Code Playgroud)
但是它的行为似乎与codePoints()方法相同,返回8类似的东西"???"。
我在macOS 10.12上使用Docker 1.12.5,我正在设置一个开发环境,我有一个应用程序映像,以及一个共享的redis映像,它有一些预先填充的配置变量.
即使在完成了一些教程(并阅读了docker0关于Mac上没有的内容)之后,我也在努力连接这两个容器.
我开始redis使用以下图片:
docker run -d -p 6379:6379 (IMAGE ID)
Run Code Online (Sandbox Code Playgroud)
在我的redis图像中,我有:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dffb89854618 d59 "docker-entrypoint.sh" 20 seconds ago Up 19 seconds 0.0.0.0:6379->6379/tcp drunk_williams
Run Code Online (Sandbox Code Playgroud)
而从我的Mac我可以成功地通过连接redis-cli命令没有问题.
但是当我开始一个简单的ubuntu图像时,我似乎无法连接到这个单独的redis图像:
root@2d4eda315f4f:/# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:03
inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20707 errors:0 dropped:0 overruns:0 frame:0
TX …Run Code Online (Sandbox Code Playgroud) 我有一个Cocoa项目,我最近导入到Xcode 4.我注意到每个特定构建目标的两个Scheme,一个用于32位,一个用于64位.我的项目设置设置为"标准(32/64位英特尔)".
当我选择"我的Mac 32位"方案时,是否为32位计算机编译它,并选择"我的Mac 64位",然后为64位计算机编译它?如果我选择"我的Mac 64位"方案,它将不再在32位机器上运行吗?

我有一个需要使用 Cocoa 打印的项目的简单列表。我有一个半生不熟的解决方案,它使用带有自定义drawRect:方法的 NSView ,但它相当复杂且不易维护。
我想要的是一个 HTML 字符串(可以很容易地从列表中构建),它可以嵌入到一次性 WebView 中,然后打印。
假设我有一个简单的 NSString 像:
NSString *htmlString = @"<b>Test</b>";
Run Code Online (Sandbox Code Playgroud)
创建显示此内容的 WebView 的最简单方法是什么?我试过下面的代码,但它导致一个空白页:
WebView *webView = [[WebView alloc] init];
NSString *dir = @"/Users/Me/Desktop/";
NSString *fileUrl = [dir stringByAppendingPathComponent:@"Temp_Print.html"];
NSString *htmlString = @"<b>Hi!</b>";
[[htmlString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileUrl atomically:YES];
[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fileUrl]]];
[webView setFrame:NSMakeRect(0, 0, 500, 500)];
NSPrintOperation *po = [NSPrintOperation printOperationWithView:webView printInfo:pi];
[pi release];
[po runOperation];
Run Code Online (Sandbox Code Playgroud) 我有一个NSTableView包含许多项目.我想实现从拖内和删除外的NSTableView的进行删除拖曳的项目.(有点像Safari的'poofs'书签.)
在NSTableView已经配置为支持拖放N"降重新排序,并接受来自另一滴NSTableView在应用程序中,因此,虽然大部分是有线了,我只是缺少一小块功能.
更新:
感谢肖恩到目前为止的帮助.虽然我可以收到一个项目在它已经浮动回到其原始位置后被拖出的通知(请参阅对他的回答的评论),但我希望在释放鼠标按钮后立即收到通知.
当前行为是用户将项目拖放出来,将拖动视为"无效",并使项目动画回原始位置.然后收到通知,我可以删除该项目,但从UI的角度来看,这对于用户来说有点混乱.
为了提高一些多线程/排序的乐趣,我决定整理一个Quicksort测试(用Objective-C编写),该测试使用Grand Central Dispatch来确定利用多核机器的速度.
这是生成的输出:
2011-11-27 13:10:55.595 Quicksort[1583:707] Took 4.731876 seconds to sort 1000000 elements with NO GCD
2011-11-27 13:10:55.670 Quicksort[1583:707] Took 0.070753 seconds to sort 1000000 elements WITH GCD
Run Code Online (Sandbox Code Playgroud)
这是一个相当简单的算法,使用维基百科页面上提到的简单版本:
我在i7机器上运行它,所以预计性能提升大约为8倍左右.相反,使用Grand Central Dispatch时,算法的速度大约快60-70倍.
是我的编码错误导致的差异,还是使用我不知道的GCD技术优势?
我正在尝试在iOS项目中设置一个简单的OCMock单元测试,只是为了熟悉框架.
我有一个模拟的DataLoader类,即使我自己调用这个方法,我的期望也会失败:
- (void)testSimpleMocking {
// Mock the class
id mock = [OCMockObject niceMockForClass:[DataLoader class]];
// Override the 'dispatchLoadToAppDelegate:' to be a no-op
[[[mock stub] andReturn:nil] dispatchLoadToAppDelegate:[OCMArg any]];
// Expect the method to be called
[[mock expect] dispatchLoadToAppDelegate:[OCMArg any]];
// Call the method
[mock dispatchLoadToAppDelegate:nil];
// Verify
[mock verify];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此测试时,我收到错误:
/Users/Craig/projects/MyApp/Unknown.m: -[MockingDataLoaderTest testSimpleMocking] : OCMockObject[DataLoader]:
expected method was not invoked: dispatchLoadToAppDelegate:<OCMAnyConstraint: 0x1a3d890>
Run Code Online (Sandbox Code Playgroud)
当我自己调用这个方法时,这怎么可能?
编辑:一个更复杂的案例:
- (void)testDataLoaderWaitsForDownload {
id mock = [OCMockObject niceMockForClass:[DataLoader class]];
id metadataItem = …Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中实现通知.该应用程序通过iCloud共享数据,通知保存在 iCloud共享数据中.(这是一个鞋盒应用程序.)
不幸的是,我没有资源来支持推送通知.
根据这份文件:
OS X中针对非运行应用程序的唯一推送通知类型是图标标记.
这仍然是这样吗?如果是这样,那没关系 - 我正在运行的 Mac应用程序已经能够(1)检测iCloud更改,(2)确定新的本地通知是否需要调度或现有的需要更新,以及(3)调度它们.所以添加推送支持并不是我想要的.
但是 - 我想知道如何从iOS方面解决这个问题.如果我在Mac上安排通知,并将其保存到iCloud,iOS上的应用程序如何在后台收到通知?
如果iOS应用程序在前台,我可以确认一切正常.收到iCloud通知,加载数据,重新安排通知.
但是如果我的应用程序在后台运行,或者根本没有运行,那么处理这个问题的最佳方法是什么?我理解后一种情况是我很可能无法控制的情况.但如果应用程序在后台,我会:
是否需要生成后台任务以定期检查数据更改?要么,
是否有可以订阅的通知,只有在iCloud数据发生变化时才会通知我?
我找到了它的fetch价值UIBackgroundModes,但我不确定这是我想要的 - 我不是在取得,我只是想在后台回应iCloud的变化.