通常,在编写Web应用程序时,我们希望在客户端执行验证以提供即时反馈,并在服务器端执行验证以确保数据完整性和安全性.但是,客户端浏览器应用程序通常使用JavaScript编写.服务器端可以用Java,Php,Ruby,Python和许多其他语言编写.当服务器端由像node.js这样的东西支持时,在客户端和服务器上重用相同的验证代码真的很容易,但是如果服务器端基于Rails或Django(或者你可以命名的任何其他框架) ),确保验证代码保持同步的最佳方法是什么?在多种语言中重新实现相同的代码似乎有点多余.
给定NSTreeController表示的模型对象,如何在树中找到它们的索引路径并随后选择它们?这似乎是一个非常明显的问题,但我似乎无法找到它的任何参考.有任何想法吗?
这个说法失败了。我如何从一个枚举转换为另一个枚举(它们是相同的)
enum Enum1 {
Key1 = 'key'
}
enum Enum2 {
Key1 = 'key'
}
const key = Enum1.Key1
const key2 = key as Enum2
Run Code Online (Sandbox Code Playgroud) 我对Cocoa有点新意,我正在读书NSIndexSet.为什么有必要?在我看来,这NSIndexSet只是一个NSSet整数,是吗?创建一个单独的集合的目的是什么?
我有一个NSViewController管理NSTableView,发现NSViewController有一个representedObject特性,但是它不是一个IBOutlet,我不能约束dataSource的NSTableView到representedObject的财产NSViewController在Interface Builder。表示对象属性应如何使用?有适当使用的例子吗?
使用node-inspector,我无法在以下node.js代码中设置断点.(内容main.js)
(function() {
require('underscore');
var doSomething = function(callback) {
callback('doSomething Finished');
}
doSomething(function(x) {
console.log(x);
});
}).call(this);
Run Code Online (Sandbox Code Playgroud)
我可以轻松地在第2行,第4行或第8行设置断点,但无论我怎么努力,调试器都不会让我在第5行或第9行设置断点.要清楚,我正在使用以下命令来运行node-inspector
node --debug-brk main.js
node-inspector
Run Code Online (Sandbox Code Playgroud)
我也尝试在网络风暴中进行调试,但问题仍然存在.如果我删除该行require('underscore');,那么问题会立即消失,我可以再次在函数体内设置断点.如果我删除最外面的闭包函数,问题也会消失.似乎require文件级别关闭之间的交互正在搞乱节点调试功能.有没有人自己经历过这个问题和/或知道能够打破功能体内的任何变通方法?
编辑:我的节点js版本
Tony:~ $ node --version
v0.10.12
Tony:~ $
Run Code Online (Sandbox Code Playgroud) 我有一个基于视图的NSOutlineView绑定到NSTreeController.outlineView:isGroupItem:在我的委托中实现方法之前,一切似乎都正常工作 ,然后组头突然停止显示.像这样

我确认如果我要将NSOutlineView更改为基于单元格,则组项目会正确显示.NSTableView也观察到类似的行为.还有其他人遇到过这个问题吗?
我知道你可以让Xcode在其他项目中引用框架/静态lib构建目标,但如果你想引用的项目没有框架/静态lib目标,你可以直接引用另一个Xcode项目的源代码吗?我试图使用子项目和Xcode 4工作区来做到这一点无济于事.调整标题搜索路径后,所有#import语句都能正常工作,但我仍然会收到令人讨厌的编译器错误报告未找到的符号.
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Developer/usr/bin/clang -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.7.sdk -L/Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug -F/Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug -filelist /Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Intermediates/.build/Debug/.build/Objects-normal/x86_64/.LinkFileList -mmacosx-version-min=10.7 -fobjc-arc -framework Cocoa -o /Users/Tony/Library/Developer/Xcode/DerivedData/-bewprsseyzwgmsdpwvjfuzjiilap/Build/Products/Debug/.app/Contents/MacOS/
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_MagicalRecordHelpers", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_MRCoreDataAction", referenced from:
objc-class-ref in ItemsArrayController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
此外,这个新的Xcode 4工作区的处理是什么?它与子项目有何不同?我唯一能找到的是它们看起来与众不同......
工作区

子projct

为了使用它IKImageBrowserView,必须使用以下方法实现数据源
– numberOfItemsInImageBrowser:
– imageBrowser:itemAtIndex:
Run Code Online (Sandbox Code Playgroud)
这NSTableView与以下数据源方法没有什么不同
– numberOfRowsInTableView:
– tableView:objectValueForTableColumn:row:
Run Code Online (Sandbox Code Playgroud)
然而,令人不安的区别在于,NSTableView考虑到在调用之前当前可见的内容– tableView:objectValueForTableColumn:row:,IKImageBrowserView似乎迭代了给定的整个范围– numberOfItemsInImageBrowser:并要求imageBrowser:itemAtIndex:.不幸的是,数据源有时会被成千上万的项目支持,加载所有不必要的项目是一种可怕的浪费.无论如何IKImageBrowserView只有加载项目可见,(+当然预加载)就像NSTableView是吗?
更新
我尝试编写一个NSProxy子类,它确实有效.(好吧,在一秒钟内更多关于它)它看起来像这样
// .h file
#import <Foundation/Foundation.h>
@interface ILArrayItemProxy : NSProxy
- (id)initWithArray:(id)array index:(NSUInteger)index;
+ (id)proxyWithArray:(id)array index:(NSUInteger)index;
@end
// .m file
#import "ILArrayItemProxy.h"
@interface ILArrayItemProxy() {
id _array;
NSUInteger _index;
}
@property (readonly) id target;
@end
@implementation ILArrayItemProxy
- (id)initWithArray:(id)array index:(NSUInteger)index {
_array = array;
_index = …Run Code Online (Sandbox Code Playgroud) 根据Apple文档,在回调中FSEvents,
/* These flags are only set if you specified the FileEvents */
/* flags when creating the stream. */
kFSEventStreamEventFlagItemCreated = 0x00000100,
kFSEventStreamEventFlagItemRemoved = 0x00000200,
kFSEventStreamEventFlagItemInodeMetaMod = 0x00000400,
kFSEventStreamEventFlagItemRenamed = 0x00000800,
kFSEventStreamEventFlagItemModified = 0x00001000,
kFSEventStreamEventFlagItemFinderInfoMod = 0x00002000,
kFSEventStreamEventFlagItemChangeOwner = 0x00004000,
kFSEventStreamEventFlagItemXattrMod = 0x00008000,
kFSEventStreamEventFlagItemIsFile = 0x00010000,
kFSEventStreamEventFlagItemIsDir = 0x00020000,
kFSEventStreamEventFlagItemIsSymlink = 0x00040000
Run Code Online (Sandbox Code Playgroud)
但是,我三次检查kFSEventStreamCreateFlagFileEvents调用时没有设置标志
FSEventStreamRef FSEventStreamCreate(
CFAllocatorRef allocator,
FSEventStreamCallback callback,
FSEventStreamContext *context,
CFArrayRef pathsToWatch,
FSEventStreamEventId sinceWhen,
CFTimeInterval latency,
FSEventStreamCreateFlags flags);
Run Code Online (Sandbox Code Playgroud)
但无论我做什么,kFSEventStreamEventFlagItem*当事件从FSEvents …
cocoa ×6
architecture ×1
casting ×1
compilation ×1
debugging ×1
enums ×1
filesystems ×1
fsevents ×1
imagekit ×1
lazy-loading ×1
linker ×1
macos ×1
node.js ×1
nsindexpath ×1
nsindexset ×1
nsset ×1
nstableview ×1
nsview ×1
osx-lion ×1
requirejs ×1
subproject ×1
typescript ×1
validation ×1
webstorm ×1
workspace ×1
xcode ×1