使用NSOpenPanel不兼容指针类型警告

时间:2013-05-26 18:40:09

标签: objective-c cocoa nsopenpanel

我有一些用于打开文本文件的代码并且它运行良好,但现在它的某些部分已被弃用,所以我更改它们以使其工作没有任何错误。 我完成了一个新的代码,它工作正常,但它给了我一个警告,我无法理解如何解决它... 这是我的代码:

-(IBAction)openMyFile:(id)sender
{
    int i;

    NSOpenPanel* openDlg = [NSOpenPanel openPanel];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSURL *myUrl = [NSURL fileURLWithPath:documentsDirectory]; //before here I had setDirectory but now is deprecated
    [openDlg setDirectoryURL:myUrl];

    [openDlg setCanChooseFiles:YES];

    [openDlg setCanChooseDirectories:YES];


    if ( [openDlg runModal] == NSOKButton )
    {

        NSArray* files = [openDlg URLs]; // here I had [openDlg filenames] but now is deprecated

        for( i = 0; i < [files count]; i++ )
        {
            NSString* fileName = [files objectAtIndex:i];

            NSString *content = [NSString stringWithContentsOfURL:fileName encoding:NSUTF8StringEncoding error:nil]; //HERE IS WHERE I GET THE WARNING
        }
     }
}

我得到的警告说:

  

不兼容的指针类型将'nsstring * __ strong'发送到'nsurl *'类型的参数

当我尝试在NSString *内容中传递文件的内容时它会出现但是无论如何内容都充满了文件的内容...所有接缝都能正常工作...... 任何帮助将非常感谢...和平 - 马西

1 个答案:

答案 0 :(得分:0)

[openDlg URLs]会返回网址的数组,而非字符串

NSArray *files = [openDlg URLs];
for(i = 0; i < [files count]; i++)
{
    NSURL *fileURL = [files objectAtIndex:i];
    NSString *content = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:nil];
}