2015-11-12 2 views
1

Я хочу, чтобы получить эту строку в одной из моих функций ... но это не проблема, которую я делал раньше. Но на этот раз строка определяется как и пусть внутри внутри функции и не может быть найдена где-либо еще внутри функции. Я хочу, чтобы иметь возможность использовать то же значение (fileloaction) строку за пределами этой функции, но ее невозможно найти. Вот мой код:swift, как извлечь строку из другой функции?

func extract_json(data:NSString) 
{ 
    var parseError: NSError? 
    let jsonData:NSData = data.dataUsingEncoding(NSASCIIStringEncoding)! 
    let json: AnyObject? 
    do { 
     json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) 
    } catch let error as NSError { 
     parseError = error 
     json = nil 
    } 
    if (parseError == nil) 
    { 
     if let works_list = json as? NSArray 
     { 
      for (var i = 0; i < works_list.count ; i++) 
      { 
       if let fileList = works_list[i] as? NSDictionary 
       { 
        if let fileName = fileList["filename"] as? String 
        { 
         TableData1.append(fileName) 

         //if let country_code = country_obj["post_text"] as? String 
         //{ 
          //TableData1.append(country_name + " [" + country_code + "]") 
         //} 
        } 

        this is the function 
        if let filelocation = fileList["filelocation"] as? String 
        { 
         TableData1.append(filelocation) 


        } 

        if let mime = fileList["mime"] as? String 
        { 
         TableData1.append(mime) 


        } 
       } 
      } 
     } 
    } 

    do_table_refresh(); 
} 

Эта строка fileloaction не могу найти где-либо еще в этой функции, так по этой причине я не могу использовать его где-нибудь еще, что я должен был бы, как здесь:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     extract_json(filelocation) 

     // selectedFileLocation = "http://192.168.1.14:8080/Works/uploads/1445557983_putty.docx" 

     selectedFileLocation = filelocation 


     if(segue.identifier == "detailView") { 

      let vc = segue.destinationViewController as! DisplayWorksViewController 
      vc.selectedFileLocation = selectedFileLocation 
      vc.selectedLabel = selectedLabel 
      print("selectedFileLocation = \(vc.selectedFileLocation)") 
     } 
    } 

ответ

1

Объем переменной fileLocation ограничен в вашей функции extract_json если блок. Чтобы получить доступ к его значению по всем функциям/методам контроллера вида, создайте переменную в контроллере и присвойте ей значение fileLocation. Позже используйте эту переменную для доступа.

Надеюсь, это поможет.

+0

как вы это сделаете, если он не сможет забрать его где-нибудь – BOB

+0

вы можете отформатировать свой код. Чтобы я мог помочь вам в этом. – PK20

+0

вы также можете добавить некоторые инструкции печати внутри своего кодового блока, чтобы увидеть, где он ломается. – PK20

Смежные вопросы