我刚刚了解了AJAX Push Engine,但它运行在Linux/Apache上,这对我来说不是一个选择.
目前使用AJAX来保持页面最新,我必须经常轮询服务器,这对于高流量站点来说并不是很好.仅在必要时将数据推送到客户端的选项是一个很好的选择,但本机JavaScript不支持套接字,AFAIK.我读到的一个技巧,但现在网站已经不复存在,就是使用Flash模块来处理套接字通信并将消息转发给JavaScript.
研究这种方法的麻烦在于,"JavaScript push"作为关键字提出了数组的推送功能,而不是我想要的上下文.
如何与服务器建立持久连接以在浏览器中进行推送通信?我是否需要Flash/ActionScript,还是有其他选项适用于所有当前活动的浏览器?(IE6/7/8,FF3,Safari,Chrome)
说到服务器,我还需要解决由于Origin策略和端口安全性引起的复杂问题.我很感激您能指出的任何可以解释可用选项的内容.
我正在尝试下面的代码,看看我是否可以让它扩展这些位置的绝对路径,以便我可以将它们用于NSFileManager的操作,当我使用波浪号和相对路径时它会失败.
我正在使用Objective-C中的Xcode中的命令行应用程序.我可以从命令行运行程序,它为我扩展了路径,但是从Xcode中的目标我使用$ PROJECT_DIR和$ HOME传递命令行参数的值,以便让我在那里的一部分.问题是我需要到$ PROJECT_DIR/..这是不能解决NSFilemanager.
看起来URLByResolvingSymlinksInPath或URLByStandardizingPath并不像我期望的那样工作.我还应该做些什么吗?
BOOL isDir = TRUE;
for (NSString *path in @[@"~/", @".", @".."]) {
NSURL *url = [[[NSURL URLWithString:path] URLByResolvingSymlinksInPath] URLByStandardizingPath];
DebugLog(@"path: %@", url.absoluteString);
DebugLog(@"Exists: %@", [[NSFileManager defaultManager] fileExistsAtPath:url.path isDirectory:&isDir] ? @"YES" : @"NO");
}
Run Code Online (Sandbox Code Playgroud)
更新:我使用stdlib的realpath解析路径并创建了以下方法虽然我不理解这个C函数.具体来说,我不知道解决的价值是什么,或者我将如何使用它.我确实看到了获得预期的回报值.
- (NSString *)resolvePath:(NSString *)path {
NSString *expandedPath = [[path stringByExpandingTildeInPath] stringByStandardizingPath];
const char *cpath = [expandedPath cStringUsingEncoding:NSUTF8StringEncoding];
char *resolved = NULL;
char *returnValue = realpath(cpath, resolved);
// DebugLog(@"resolved: %s", resolved);
// DebugLog(@"returnValue: %s", returnValue);
return [NSString stringWithCString:returnValue encoding:NSUTF8StringEncoding];
}
Run Code Online (Sandbox Code Playgroud) 我试图使用这个应该工作的命令.当启动使用Express.js的服务器时,它似乎没有传递环境变量.这是针对这个开源项目,Bus Ticker.
PORT=8081; forever start ./website/app.js
In app.jsis有这一行所以我希望我可以在该命令行上设置环境变量,如上所示.
app.set('port', process.env.PORT || process.env.npm_package_config_port || 3000);
您可以看到此图像中显示的项目格式如何从Plist格式转换为Git中这些分支之间的XML,这使得文件格式加倍,这在合并分支时经常会发生冲突.似乎有些东西正在从Plist改为XML格式.这个项目确实使用CocoaPods,所以这可能是一个因素.我使用的是CocoaPods 0.33.1.
我测试了运行CocoaPods,这是在Xcode旁边修改应用程序的唯一方法,虽然我没有看到它在运行时改变项目pod install.
关于如何将项目文件从Plist格式更改为XML的任何想法?

使用以下代码,JsLint警告y已在第二个块中定义.我经常这样做,并且不认为它是语法错误,因为变量是在不同的块中定义的.
我是否真的应该使用不同的变量名称,即使它位于不同的块中?范围是由if语句的代码块定义还是仅作用于功能块的范围?
function x() {
if (condition1) {
var y = 0;
// use y
}
if (condition2) {
var y = 20;
// use y
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Core Data实现非常基本的自定义迁移.最初将单个属性创建为Integer 16值为0或1.在新模型版本中,此属性已更改为,Boolean并且下面的迁移策略应处理它.我看过几个用Swift编写的例子,它们似乎没有使可访问性公开/公开或添加@objc以使Objective-C可以访问它.我这样做是为了消除任何不起作用的原因.
我使用以下表达式为实体映射创建了映射模型和自定义策略.
FUNCTION($entityPolicy, "convertInteger:" , $source.active)
它一直失败,因为无法识别选择器.具体来说,它会收到以下错误.
unrecognized selector sent to instance
我尝试了很多变化.
我无法获得任何变化.这个表达式的有效选择器是什么?
在Swift代码中,我在初始化程序中放置了一个断言并且它通过了,但是我不能在策略的表达式中使用相同的选择器.
import CoreData
@objc
open class IntegerToBooleanMigrationPolicy: NSEntityMigrationPolicy {
@objc
public override init() {
super.init()
assert(responds(to: #selector(convert(integer:))), "Policy does not respond to selector!")
}
@objc
open func convert(integer: Int16) -> Bool {
debugPrint("Converting \(integer) to boolean")
return integer == 1
}
}
Run Code Online (Sandbox Code Playgroud) 我创建了以下方法,该方法首先使用NSString上的内置convertStringToTitleCase方法,但它实际上只是将每个单词的第一个字母大写.我在.NET中看到TextInfo.ToTitleCase有一种方法可以尝试我想用Objective-C做什么,但也不尽如人意.
http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx
我写的开始的方法如下.你如何正确处理大写字符串?将数据库转换为全部大写/小写有帮助吗?
- (NSString *)convertStringToTitleCase:(NSString *)str {
NSMutableString *convertedStr = [NSMutableString stringWithString:[str capitalizedString]];
NSRange range = NSMakeRange(0, convertedStr.length);
// a list of words to always make lowercase could be placed here
[convertedStr replaceOccurrencesOfString:@" De "
withString:@" de "
options:NSLiteralSearch
range:range];
// a list of words to always make uppercase could be placed here
[convertedStr replaceOccurrencesOfString:@" Tv "
withString:@" TV "
options:NSLiteralSearch
range:range];
return convertedStr;
}
Run Code Online (Sandbox Code Playgroud) 这是我想要做的一个例子.我有当前用户作为PFUser和另一个名为Item的类我有一个名为"所有者"的关系,它是PFUser的关系.我想查询具有关系中当前用户的Item的所有实例.
我看到了相反查询方式的示例,但我没有看到如何获得关系,然后将其过滤到关系上的PFUser匹配.这是一个例子.
https://www.parse.com/questions/inverse-relationship-support
PFObject老师= ... //班级"老师"的PFObject PFRelation studentsRelation = [老师relationforKey:@"学生"]; PFQuery*query = studentsRelation.query; [query findObjectsInBackground:...
对于我的例子,我会这样做......
PFObject item = [PFObject objectWithClassName:@"Item"];
PFRelation relation = [parseObject relationforKey:@"owner"]; // Filter to PFUser?
[query findObjectsInBackground:...
Run Code Online (Sandbox Code Playgroud)
我可以使用whereKey,但我该怎么用?我是否在objectId上匹配?
[query whereKey:@"objectId" equalTo:user.objectId];
Run Code Online (Sandbox Code Playgroud)
我一直收到错误102:RelatedTo运算符需要一个有效的指针.我的猜测是,因为我从一个空对象开始,它没有起点.Teacher的示例必须以填充的实例开头.我唯一拥有的是PFUser.必须有一种方法来查询Item实例并在它拥有给当前用户的"所有者"关系上对其进行过滤.我无法弄清楚,我还没有找到如何进行此查询的示例.
这个问题也在Parse.com上:https://parse.com/questions/how-do-i-query-using-pfrelation-when-i-just-have-pfuser
网址下载
http://code.google.com/p/mwiphonesdk/source/browse/#svn/trunk/iMADE/PrepTasks/08
我在上面链接的位置有代码,我使用NSMutableString在下载数据时附加字符串.但我发现使用appendString不会增加可变字符串的长度.我一定做错了什么.
当我完成后,我需要将NSMutableString转换为NSString以返回它.我已经找到了这样做的例子,但我还没有看到.
我最熟悉Java和C#,其中有一个StringBuffer/StringBuilder,它允许你附加片段,它们只是在最后调用toString来获取一个String.在Objective-C中看起来并不那么容易.
NSString* str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
#pragma mark TODO Confirm this is appending a value to the mutable string
[self.mutableString appendString:str];
NSLog(@"str length: %d, %d", [str length], [self.mutableString length]);
Run Code Online (Sandbox Code Playgroud)
上面是调用appendString的代码部分.
我看到str的长度> 0但调用appendString不会增加self.mutableString的长度.
我在这做错了什么?
以下代码下载图像并使用块返回结果,以便我可以利用块和Grand Central Dispatch的异步功能.我发现如果图像或错误对象为零,我会收到EXC_BAD_ACCESS错误.如果参数的值为零,它总是会导致错误吗?
失败的部分是returnImage块,用于在方法结束时返回图像.
- (void)downloadImageWithBlock:(void (^)(UIImage *image, NSError *error))returnImage {
dispatch_queue_t callerQueue = dispatch_get_current_queue();
dispatch_queue_t downloadQueue = dispatch_queue_create("Image Downloader Queue", NULL);
dispatch_async(downloadQueue, ^{
UIImage *image = nil;
NSError *error;
// get the UIImage using imageURL (ivar)
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Downloading: %@", imageURL);
});
NSURL *url = [NSURL URLWithString:imageURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLResponse *urlResponse = nil;
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
if (!error && response) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Success!");
});
image = [UIImage imageWithData:response];
}
// image …Run Code Online (Sandbox Code Playgroud) 我有在 NSHomeDirectory 下创建文件夹的代码,但它总是失败,我不明白为什么。它应该可以工作,但它一直说不允许该操作。有任何想法吗?
NSURL *homeURL = [NSURL fileURLWithPath:NSHomeDirectory() isDirectory:YES];
NSURL *previewsURL = [homeURL URLByAppendingPathComponent:@"Previews"];
DebugLog(@"homeURL: %@", homeURL);
DebugLog(@"previewsURL: %@", previewsURL);
BOOL isDirectory = TRUE;
if (![[NSFileManager defaultManager] fileExistsAtPath:previewsURL.path isDirectory:&isDirectory]) {
DebugLog(@"isDirectory: %@", isDirectory ? @"YES" : @"NO");
NSAssert(isDirectory, @"Must be a directory");
NSError *error = nil;
if (![[NSFileManager defaultManager] createDirectoryAtPath:previewsURL.path withIntermediateDirectories:TRUE attributes:nil error:&error]) {
DebugLog(@"Error: %@", error); // WHY?!
}
else {
BOOL isDirectory = TRUE;
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:previewsURL.path isDirectory:&isDirectory];
NSAssert(exists, @"Directory must exist");
}
}
Run Code Online (Sandbox Code Playgroud) 我使用以下代码从设置视图中保存值,该视图从UITextField获取值并使用NSUserDefaults存储它们.下面的代码甚至调用同步,但它没有保存更改.我在这做错了什么?
- (IBAction)save {
NSLog(@"save");
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (self.usernameTextField.text != nil) {
NSLog(@"username: %@", self.usernameTextField.text);
[defaults setObject:kTwitterUsernameKey forKey:self.usernameTextField.text];
}
if (self.passwordTextField.text != nil) {
NSLog(@"password: %@", self.passwordTextField.text);
[defaults setObject:kTwitterPasswordKey forKey:self.passwordTextField.text];
}
[defaults synchronize];
[self dismissModalViewControllerAnimated:TRUE];
}
Run Code Online (Sandbox Code Playgroud) 当我按下大写字母时键入TRUE或FALSE,它仍然假设我想要小写为真或假.在使用Objective-C时,我相信我们应该使用大写版本,即使它们当前是等效的,但是Xcode不断将其更改为true或false的事实让我第二次猜测.
任何人都知道我们现在可以使用真假吗?