我正在顺利地完成Cocoa,但这个问题看起来很基本,它取消了我学到的所有很酷的东西.:/
我有一个生成的文件路径,它需要是NSURL格式.从研究来看,这是我写的代码:
NSLog(@"Old path = %@", pathToFile);
NSURL *xmlURL = [[[NSURL alloc] init] fileURLWithPath:pathToFile];
NSLog(@"New path = %@", [xmlURL absoluteString]);
Run Code Online (Sandbox Code Playgroud)
并输出:
2010-01-27 15:39:22.105 MusicLibraryStats[28574:a0f] Old path = file://localhost/Users/[username]/Music/iTunes/iTunes%20Music%20Library.xml
2010-01-27 15:39:22.105 MusicLibraryStats[28574:a0f] New path = (null)
Run Code Online (Sandbox Code Playgroud)
首先,alloc-init甚至不需要; 其他人似乎逃脱了它.在这种情况下,如果我没有alloc-init,我会在该行上收到"无法识别的选择器"错误.当然,现在我只是变老了(null).
我在哪里?
谢谢!
我从网络服务响应中获得了货币代码(例如:USD,EUR,INR).我需要显示相应货币代码的货币符号.如果货币代码是美元,我需要显示$,如果货币代码是欧元我需要显示€.我怎样才能做到这一点?请提出任何想法或示例代码来执行此操作.请帮我.提前致谢.
我正在尝试实现一个使用RestKit的iOS应用程序.在我到目前为止看到的所有示例中,以下代码用于创建URL:
NSURL *baseURL = [NSURL URLWithString:@"https://api.service.com/v1"];
NSURL *relativeURL = [NSURL URLWithString:@"/files/search" relativeToURL:baseURL];
Run Code Online (Sandbox Code Playgroud)
但随后[relativeURL absoluteString]会回来https://api.service.com/files/search.
所以我尝试了一些例子:
NSURL *baseURL1 = [NSURL URLWithString:@"https://api.service.com/v1/"];
NSURL *baseURL2 = [NSURL URLWithString:@"https://api.service.com/v1"];
NSURL *baseURL3 = [NSURL URLWithString:@"/v1" relativeToURL:[NSURL URLWithString:@"https://api.service.com"]];
NSURL *relativeURL1 = [NSURL URLWithString:@"/files/search" relativeToURL:baseURL1];
NSURL *relativeURL2 = [NSURL URLWithString:@"/files/search" relativeToURL:baseURL2];
NSURL *relativeURL3 = [NSURL URLWithString:@"/files/search" relativeToURL:baseURL3];
NSURL *relativeURL4 = [NSURL URLWithString:@"files/search" relativeToURL:baseURL1];
NSURL *relativeURL5 = [NSURL URLWithString:@"files/search" relativeToURL:baseURL2];
NSURL *relativeURL6 = [NSURL URLWithString:@"files/search" relativeToURL:baseURL3];
NSLog(@"1: %@", [relativeURL1 absoluteString]);
NSLog(@"2: %@", [relativeURL2 absoluteString]); …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我NSDictionary的键应该是子类的实例NSManagedObject.
然而,问题是NSManagedObject没有实现NSCopying协议,这意味着没有Core Data对象/实例NSManagedObject可以用作字典键,即使该-[hash]方法适用于它们.
我该怎么办?
有没有简单的方法将webview的内容设置为HTML字符串(无需加载文件)?
谢谢
我正试图从我的iPhone应用程序访问谷歌地图的前向地理编码服务.当我尝试从一个带有管道的字符串中创建一个NSURL时,我只得到一个nil指针.
NSURL *searchURL = [NSURL URLWithString:@"http://maps.google.com/maps/api/geocode/json?address=6th+and+pine&bounds=37.331689,-122.030731|37.331689,-122.030731&sensor=false"];
Run Code Online (Sandbox Code Playgroud)
我没有在google api中看到任何其他方式通过管道发送边界坐标.有关如何做到这一点的任何想法?
我正在开发一个iOS应用程序,其中一项功能是扫描QR码.为此,我使用了优秀的图书馆ZBar.扫描工作正常,通常很快.但是,当您使用较小的QR码时,扫描需要更长的时间,主要是因为自动对焦需要一些时间来调整.我正在尝试并注意到可以使用以下代码锁定焦点:
AVCaptureDevice *cameraDevice = readerView.device;
if ([cameraDevice lockForConfiguration:nil]) {
[cameraDevice setFocusMode:AVCaptureFocusModeLocked];
[cameraDevice unlockForConfiguration];
}
Run Code Online (Sandbox Code Playgroud)
在成功扫描后使用此代码时,即将进行的扫描非常快.这让我很奇怪,在扫描一个代码之前,我能以某种方式锁定焦点吗?该应用程序将只扫描相当小的QR码,因此永远不需要专注于远处的东西.当然,我可以实现像tap一样专注的东西,但最好是我想避免这个额外的步骤.有没有办法实现这个目标?或者,在处理较小的QR码时,是否有其他方法可以加快速度?
//亚历山大
我正在使用KVC/KVO为大学项目创建自定义绑定实现(它需要自定义,因为我想做的事情超出了绑定可以做的事情,包括在iOS上运行).
我有一个'绑定控制器',它在一个对象的多个键上注册KVO通知(使用addObserver:forKeyPath:options:context :),我确实收到了通知.但是,我收到了每个更改的两个通知.我有一个解决方法的想法,但我宁愿弄清楚为什么会发生这种情况并纠正它!
有没有人有任何想法为什么会这样?我确定我一次只注册了每个通知,并且取消注册一次会导致两个通知都停止.
谢谢.
编辑:
我有一些代码请求,所以我会把它放进去.目前有点粗糙,它基本上仍然是一个概念证明,所以请耐心等待.
这是我观察的属性之一(我知道它有点奇怪,但这个类本质上暴露了NSManagedObject的某些属性作为自身的属性):
- (void)setName:(NSString *)name
{
[self willChangeValueForKey:@"name"];
[contact setFirstName:name];
[self didChangeValueForKey:@"name"];
}
Run Code Online (Sandbox Code Playgroud)
这是我用来观察该属性的代码(确认只运行一次,并且只在一个地方运行):
[viewModel addObserver:self
forKeyPath:@"name"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial)
context:viewController];
Run Code Online (Sandbox Code Playgroud)
之后的任何调用都会改变该属性,例如:
viewModel.name = @"Joe";
[viewModel setName: @"Joe"];
[viewModel setValue: @"Joe" forKey: @"name"];
Run Code Online (Sandbox Code Playgroud)
会导致该方法:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Run Code Online (Sandbox Code Playgroud)
要被调用两次,每次使用相同的参数.
我想把url它转换成更易读的格式.例如,我有以下链接:
http://en.wikipedia.org/wiki/S%C3%A1ndor_Font
Run Code Online (Sandbox Code Playgroud)
我带走了不必要的部分,并留下了"S%C3%A1ndor_Font"作为一个NSString.有没有什么方法可以将其转换为"Sándor Font"(它实际上应该是什么),而不必键入特殊字符的每个组合并替换字符串的每个部分?
为了演示我想如何使用它,我编写了以下示例代码:
//request is a NSURLRequest with a url of http://en.wikipedia.org/wiki/S%C3%A1ndor_Font
NSRange range = [[request.URL absoluteString] rangeOfString:@"/wiki/"];
NSString *substring = [[[request.URL absoluteString] substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
//ArticleTitleLabel is a UILabel
self.ArticleTitleLabel.text = substring;
Run Code Online (Sandbox Code Playgroud)
最后,我希望标签说"Sándor Font"没有"S%C3%A1ndor_Font".谢谢!
我从NSSavePanel中检索了一个NSURL.我现在有这个NSURL,它给了我以下内容:
file://localhost/Users/brett/Documents/asdf%20asdf.json
现在,我很容易使用以下内容检索文件名:
[[[NSFileManager defaultManager] displayNameAtPath:pathAndFilename] stringByDeletingPathExtension]
这给了我正确的本地化文件名,如预期的那样: asdf%20asdf
那么,我如何获得路径,如下: file://localhost/Users/brett/Documents/