小编Doo*_*Man的帖子

如何在Swift中使用NSURLSessionDataTask

有人能帮我吗?我找不到完成语法的好例子.

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)

谢谢!

ios swift

21
推荐指数
3
解决办法
5万
查看次数

在Swift中从JSON数组中获取值

我正在尝试从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 swift

7
推荐指数
1
解决办法
2万
查看次数

SwiftData:使用 ObjectID URIRepresentation 加载 CoreData 对象?

我正在替换 iOS 应用程序中的一些 CoreData 代码以使用新的 SwiftData 框架。在我的原始代码中,我将 CoreData 对象 URI 保存在 UserDefaults 中作为快速书签。这使我能够轻松地直接获取我需要的特定对象。

例如

model.objectID().uriRepresentation().absoluteString
Run Code Online (Sandbox Code Playgroud)

在研究 SwiftData 解决方案时,我在 SwiftData 模型上发现了这个objectID属性,它的类型是PersistentIdentifier,它似乎可以满足我的要求。但似乎没有一种直接的方法来为这个值添加书签。PersistentIdentifier符合“Codeable”,我可以通过将其转换为 来保存到 UserDeafaults Data,但是当我尝试这样做时,返回的值不包含任何必要的数据,只是一个空值。这是在idobjectIDModel 对象进行编码时创建的。

"{\"implementation\":{}}"
Run Code Online (Sandbox Code Playgroud)

如何使用新的 SwiftData 框架来实现这一目标?

ios swift swift-data

7
推荐指数
1
解决办法
541
查看次数

Swift:创建一个多功能多播委托

我想在事情发生变化时使用多播委托通知多个对象.我读过的教程解释了这个,有一个协议,只有一个函数直接在代理数组上调用.当只定义了一个函数时,它工作正常.我的协议有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的一部分,编译器会信任我?

这甚至可能吗?

ios swift

6
推荐指数
2
解决办法
4322
查看次数

我可以使用Metal在GPU上运行算法吗?

我正在使用最小编辑距离算法来确定两个字符串的相关程度.我已经实现了它在CPU上运行,当你有数百个字符串时它很有用,但是当你多次比较数千个字符串时,它会减慢速度.所以我认为卸载GPU可能很有用,因为它可以同时执行多次比较.

这可能吗?我遇到的金属资源主要是图形,没有帮助.或许他们是?

ios swift metal

6
推荐指数
2
解决办法
934
查看次数

如何在Swift 3中访问传递的Enum参数

我在访问使用枚举传递的参数时遇到了一些麻烦.

通用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)

问题是我无法弄清楚如何访问apiapiRequest/中找到的参数中传递的值flaggingRequest.这可能吗?我希望这很清楚:)

swift

6
推荐指数
3
解决办法
9605
查看次数

使用侧边栏菜单时,UITableView 无意中向下移动了约 1 英寸

我的应用程序中有一个奇怪的错误,它使用侧边栏菜单和一个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)

objective-c uitableview ios

5
推荐指数
1
解决办法
2965
查看次数

标签 统计

ios ×6

swift ×6

metal ×1

objective-c ×1

swift-data ×1

uitableview ×1