有人能帮我吗?我找不到完成语法的好例子.
var url : NSURL = NSURL.URLWithString("https://itunes.apple.com/search?term=\(searchTerm)&media=software")
var request: NSURLRequest = NSURLRequest(URL:url)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession.sessionWithConfiguration(config)
NSURLSessionDataTask(session.dataTaskWithRequest(request, completionHandler: ((NSData!, NSURLResponse!, NSError!) -> Void)?)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试从JSON Web请求中获取的数组中检索值.但我无法使valueForKey函数工作,所以我可以将String应用于标签.以下示例在Apples API中搜索软件.作为测试,我希望能够将"trackName"键应用于UILabel,但我尝试的一切,我要么崩溃,要么返回nil.
这是我的代码
func searchFunction(searchQuery: NSString) {
var url : NSURL = NSURL.URLWithString("https://itunes.apple.com/search?term=\(searchQuery)&media=software")
var request: NSURLRequest = NSURLRequest(URL:url)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
var newdata : NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
var info : NSArray = newdata.valueForKey("results") as NSArray
var name: String? = info.valueForKey("trackName") as? String // Returns nil
println(name)//Returns nil
var name2 : NSString = info.valueForKey("trackName") as NSString //Crashes …Run Code Online (Sandbox Code Playgroud) 我正在替换 iOS 应用程序中的一些 CoreData 代码以使用新的 SwiftData 框架。在我的原始代码中,我将 CoreData 对象 URI 保存在 UserDefaults 中作为快速书签。这使我能够轻松地直接获取我需要的特定对象。
例如
model.objectID().uriRepresentation().absoluteString
Run Code Online (Sandbox Code Playgroud)
在研究 SwiftData 解决方案时,我在 SwiftData 模型上发现了这个objectID属性,它的类型是PersistentIdentifier,它似乎可以满足我的要求。但似乎没有一种直接的方法来为这个值添加书签。PersistentIdentifier符合“Codeable”,我可以通过将其转换为 来保存到 UserDeafaults Data,但是当我尝试这样做时,返回的值不包含任何必要的数据,只是一个空值。这是在id对objectIDModel 对象进行编码时创建的。
"{\"implementation\":{}}"
Run Code Online (Sandbox Code Playgroud)
如何使用新的 SwiftData 框架来实现这一目标?
我想在事情发生变化时使用多播委托通知多个对象.我读过的教程解释了这个,有一个协议,只有一个函数直接在代理数组上调用.当只定义了一个函数时,它工作正常.我的协议有6个功能.我想避免创建6个单独的函数,并重用一个可以应用于我的代理数组的函数.
简单的例子:(我知道这没有用,但我只是想了解我的想法.
protocol MyProtocol {
func method1()
func method2()
func method3()
}
class TestClass {
var delegates = [MyProtocol]()
func invokeDelegates(delegateMethod: () -> ()) {
for delegate in delegates {
delegate.delegateMethod()
}
}
}
Run Code Online (Sandbox Code Playgroud)
显而易见的问题是编译器抱怨原始协议中没有定义"delegateMethod".有没有办法将该方法转换为MyProtocol的一部分,编译器会信任我?
这甚至可能吗?
我正在使用最小编辑距离算法来确定两个字符串的相关程度.我已经实现了它在CPU上运行,当你有数百个字符串时它很有用,但是当你多次比较数千个字符串时,它会减慢速度.所以我认为卸载GPU可能很有用,因为它可以同时执行多次比较.
这可能吗?我遇到的金属资源主要是图形,没有帮助.或许他们是?
我在访问使用枚举传递的参数时遇到了一些麻烦.
通用RequestType,将包括更多.
enum RequestType {
case flagging(api : FlaggingRequestType)
}
Run Code Online (Sandbox Code Playgroud)
这是我的枚举接受另一个FlaggingRequestType(另一个接受字符串参数的枚举)
enum FlaggingRequestType {
case getFlag(api : String)
}
protocol Requestable {
var requestType : RequestType { get set }
}
Run Code Online (Sandbox Code Playgroud)
在这里,我建立我的标记请求
let flaggingRequest = RequestBuilder.buildFlaggingRequest(flagRequest: .getFlag(api: "http://www.apiworld.com"))
Run Code Online (Sandbox Code Playgroud)
这是我从另一个方法实际发送请求的方法.
func sendRequest(for apiRequest : Requestable) {
switch apiRequest.requestType {
case .flagging:
self.flaggingAPI(for: apiRequest)
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法弄清楚如何访问api在apiRequest/中找到的参数中传递的值flaggingRequest.这可能吗?我希望这很清楚:)
我的应用程序中有一个奇怪的错误,它使用侧边栏菜单和一个UITableView列表按钮进行导航。当我启动我的应用程序时,一切看起来都很好并且在正确的位置。
一旦我对相应的viewController, and navigate back to sidebar menu theUITableView`进行了选择,就会向下移动大约 1 英寸。
如果我按下侧边栏菜单按钮将其关闭,菜单会重置并且一切正常且看起来正常。这个错误只发生一次,一旦我选择一行,导航回它,关闭它,UITableView它将处于正确的位置,直到用户重新启动应用程序。知道发生了什么吗?
这是我的侧边栏菜单代码:
#import "SideBarViewController.h"
@interface SideBarViewController ()
@end
@implementation SideBarViewController
@synthesize controllerArray, sidebarButton;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
controllerArray = [NSArray arrayWithObjects:@"Search For Games", @"Login", @"Library", nil];
}
- …Run Code Online (Sandbox Code Playgroud)