【问题标题】:Need help to add an NSURL string to an Array需要帮助将 NSURL 字符串添加到数组
【发布时间】:2012-01-26 20:59:42
【问题描述】:

我有一个数据数组,显示带有标签信息的项目列表。在媒体部分,我想插入一个 URL 来运行视频。在@“播放视频”字符串之后加载 url(使用 NSURL)的正确程序是什么?然后当按下按钮时,url 将加载并显示视频。每个条件的 URL 都不同。感谢您的帮助!

- (void)createData {

NSMutableArray *playList = [[NSMutableArray alloc] init];
Play *play;
NSArray *media;

play = [[Play alloc] init];
play.title = @"Introduction";
play.part = @"Getting in the Game";
media = [[NSArray alloc] initWithObjects:@"Play Video", nil];
play.media = media;
[playList addObject:play];

play = [[Play alloc] init];
play.title = @"Rule #1";
play.part = @"Getting in the Game";
media = [[NSArray alloc] initWithObjects:@"Play Video", nil];
play.media = media;
[playList addObject:play];

play = [[Play alloc] init];
play.title = @"Rule #2";
play.part = @"Getting in the Game";
media = [[NSArray alloc] initWithObjects:@"Play Video", nil];
play.media = media;
[playList addObject:play];

【问题讨论】:

    标签: iphone nsarray nsurl


    【解决方案1】:
    Play *play;
    NSArray *media;
    NSURL *url;
    
    play = [[Play alloc] init];
    play.title = @"Introduction";
    play.part = @"Getting in the Game";
    //add this line
    url = [NSURL urlWithString:@"http://abc.com/video.mp4"];
    media = [[NSArray alloc] initWithObjects:@"Play Video",url, nil];
    play.media = media;
    [playList addObject:play];
    

    【讨论】:

    • 嗨,这是我所做的,它编译但当我尝试调用它时会转储。我添加了以下内容.... 播放 *play; NSArray *媒体; NSURL *url_;播放 = [[播放分配] 初始化]; play.title = @"简介"; play.part = @"进入游戏"; url_ = [NSURL URLWithString:@"abc.com/video.mp4"]; media = [[NSArray alloc] initWithObjects:@"Play Video",url_, nil]; play.media = media; [playList addObject:play]; 这样编译没有错误但得到一个屏幕转储。有什么建议吗?
    • 2011-12-28 10:19:08.411 [2069:707] -[NSURL isEqualToString:]:无法识别的选择器发送到实例 0x353550 2011-12-28 10:19:08.415 [2069:707 ***终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因是: ' - [NSURL isEqualToString:]:发送到实例0x353550无法识别的选择' ***第一掷调用堆栈:(0x382df8bf 0x37e2b1e5 0x382e2acb 0x382e1945 0x3823c680 0x31d8b20d 0x518d 0x31de79cb 0x31de6aa9 0x31de6233 0x31d8ad29 0x3823e22b 0x378d8381 0x378d7f99 0x378dc11b 0x378dbe57 0x378d3d85 0x382b3b4b 0x382b1d87 0x382b20e1 0x382354dd...
    • 你怎么能像这样比较两个不同的对象呢?您应该使用 [[url absoluteString] isEqualToString:@"whatever.com"] 在任何地方尝试将 url 与代码中的字符串进行比较,
    【解决方案2】:

    您的意思是如何将 NSURL 作为第二项包含在您的 NSArray media 中?

    media = [[NSArray alloc] initWithObjects:@"Play Video", myNsUrl, nil];
    

    有关如何从 URL 字符串创建 NSURL 对象的一些注意事项和示例代码,请参阅 https://stackoverflow.com/a/1981508/436641。

    如果您已经有一个 NSURL 对象,并且只想添加该对象的字符串表示,而不是 NSURL 对象本身:

    media = [[NSArray alloc] initWithObjects:@"Play Video", [myNsUrl absoluteString], nil];
    

    获得media 数组后,“播放视频”字符串可以检索为[media objectAtIndex:0],URL 可以检索为[media objectAtIndex:1]。

    从 OO 的角度来看,也许理想情况下,您不会在这里使用数组,而是创建一个 Media 类供您的程序实例化。但是上面回答了这个问题(如何将 NSURL 添加到数组中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      相关资源
      最近更新 更多