Merhaba bilinen o ki xcode da mail gönderirken MessageBody malesef NSArray kabul etmiyor. Bunun yerine tüm dizileri NSString'e çevirmem lazım. Ancak bu konu hakkında bir fikrim yok. Şöyle bir şeyler deniyorum ve doğal olarak hata veriyor.

 Task *task = [[Task alloc]init];
    NSMutableString * result = [[NSMutableString alloc] init];
    for (NSObject * obj in _tasks)
    {
        [result appendString:[obj description]];
        NSString* mailbody = @"<table><thead><th>Yapılacaklar</th><th>yapıldmı?</th></thead><tbody>";
        mailbody = [NSString stringWithFormat:@"%@<tr><td>%@</td><td>%@</td></tr>",mailbody,[obj description],[task.done]]; // Expected identifier..
        mailbody = [NSString stringWithFormat:@"%@</tbody></table>",mailbody];
    }

    MFMailComposeViewController *sendmail = [[MFMailComposeViewController alloc]init];
    [sendmail setMailComposeDelegate:self];
    [sendmail setMessageBody:result isHTML:YES];
    [sendmail setSubject:@"sDo"];
    [self presentViewController:sendmail animated:YES completion:nil];
    }

Bir fikri olan biri çıkarsa @dreampowder gibi çok iyi olur :)

Kodlarıma daha detaylı bakmak için de daha önce sorduğum şu konuya bir göz atabilirsiniz. Burda

soruldu: 31 Mar '13, 18:02

Salieh's gravatar image

Salieh
2081014
cevap kabul oranı: 0%

değiştirildi: 01 Nis '13, 13:11


Ben bu tarz bir uygulamada NSArray elemanlarını html şeklinde bir string'e dönüştürüp o şekilde mailbody'e ayarlamıştım. Kodları aklımdan yazdığımdan büyük küçük harf doğruluğuna bakmıyorum, o kısmını xcode ile halldersin ... Mesela basit bir html table kodu:

<table border="1">
<tr>
<th>YAPILACAKLAR</th>
<th>YAPILDIMI</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>

Bu şekilde bir string oluşturman gerekiyor. burada stringin başlangıçta şu şekilde olacak:

NSString* mailbody = @"<table><thead><th>Yapılacaklar</th><th>yapıldmı?</th></thead><tbody>";

sonra array'i döngüde kullanıyoruz:

mailbody = [NSString stringwithformat:@"%@<tr><td>%@</td><td>%@</td></tr>",mailbody,[obj description],[obj isDone]];

array bittikten sonra da table tag'imizi kapatıyoruz:

mailbody= [NSString stringwithformat:@"%@</tbody></table>",mailbody];

Bu şekilde mailbody'e ekleyip isHTML true yaptığın zaman otomatik olarak gönderdiğn mailde bir table olarak gelecektir datalar.

permanent link

cevaplandı: 01 Nis '13, 03:46

dreampowder's gravatar image

dreampowder
3.3k112849
cevap kabul oranı: 23%

değiştirildi: 01 Nis '13, 03:47

Kodları yazıdaki gibi düzenledim. Expected identifier hatası almaya başladım.

(01 Nis '13, 13:11) Salieh Salieh's gravatar image

Hocam kodu copy+paste yapiyorsunuz ama belliki icerigine bakmiyorsunuz;) buyuk bir ihtimalle toDo olan kisimda hata verdi cunki orayi ben kafadan attim :) sizin kodunuzda toDo nasil cagilirilmis bilgim yok..

(01 Nis '13, 13:37) dreampowder dreampowder's gravatar image

Kodları düzelttim. Hatayı ise şu kısımda verdi.

mailbody = [NSString stringWithFormat:@"%@%@%@",mailbody,[obj description],[task.done]]; // Expected identifier..

Daha sonra şu şekilde çevirdim..

mailbody = [NSString stringWithFormat:@"%@%@%@",mailbody,[obj description],task];

Ancak hata yok ancak mailbody kısmı boş geliyor.

(01 Nis '13, 13:38) Salieh Salieh's gravatar image

Sendmail.mailbody=mailbody; yaptiniz mi? Birde NSLog(mailbody); satiri ekleyip konsol ciktisina bakin

(01 Nis '13, 13:47) dreampowder dreampowder's gravatar image

Şimdi benim kafam iyice karıştı. Kodun en son hali burda http://pastie.org/7271436

Ayrıca [sendmail setMessageBody:result isHTML:YES]; bu şekilde setMessageBody result olması gerekmiyor mu?

(01 Nis '13, 13:54) Salieh Salieh's gravatar image
1

baya bir kafanız karışmış, yazdıklarımı pek anlamamışsınız :) http://pastie.org/7271505

(01 Nis '13, 14:01) dreampowder dreampowder's gravatar image

Ben baya baya farklı şeyler denemişim biraz :) Şuan kodda bir hata verme yok. Ancak Mail kısmında sadece Yapılacaklar yapıldı mı? şeklinde bir yazı yazıyor. Herhangi bir şekilde tasklardan eser yok. :S

(01 Nis '13, 14:05) Salieh Salieh's gravatar image

bir kere tasks nesnenizi initalize etmişsiniz ve boş haliyle stringe ekliyorsunuz. for döngünüzde for (NSObject * obj in _tasks) yerine for (Task* task in _tasks) olarak bir döngü oluşturup ,[obj description],task kullanmak yerine, task.description, task.isdone şeklinde çağırmanız gerekiyor. burada sizin task nesnenizin propertylerini bilmediğimden description ve isdone propertylerini kafadan attım, kendinize göre düzeltin

(01 Nis '13, 14:09) dreampowder dreampowder's gravatar image

Evet dediğiniz gibi düzenledim zaten ancak hala sonuç yok. Şuan hatanın ne olduğu veya eksiğin nerde olduğu konusunda bir fikrim yok. Kodun son hali şöyle: http://pastie.org/7271672

Eğer daha kolay olacak ise direk tableviewde zaten tasklar tableview kullanarak yapılabilir mi?

(01 Nis '13, 14:21) Salieh Salieh's gravatar image

NSLog(mailbody); yazdığınızda konsoldan ne çıktısı alınıyor. ayrıca sürekli yanlış kullandığınız birşey var: ([task description]) çağrısı o task objesinin (o parametrenin değil) string ifadesini yazdırır. eğer property adı "description" ise task.description olarak çağırmanız gerekir.

(01 Nis '13, 14:24) dreampowder dreampowder's gravatar image

Dostum bu kadar ilgileniyorsun gerçekten çok teşekkür ederiyorum. :)

Şimdi task.done değiştirdim. Task.name yaptım ben baya kafa gitmiş. Nameler yapıldı mı kısmının altında yer alıyor. Ancak done veya undone ibaresi belirmiyor. Kodun son hali ise tekrardan veriyorum şöyle.. http://pastie.org/7271747

Burda bir yere task.done eklersek sorun çözülür gibi geliyor. :D

(01 Nis '13, 14:27) Salieh Salieh's gravatar image

[task description] çağrısını (EĞER TASK TANIMININ OLDUĞU PARAMETRE ADI DESCRIPTION İSE!!!!) task.description olarak değiştir. yapıldımı kısmındaki değeri de bir if yardımıyla "eğer true ise evet, değil ise hayır" şeklinde değiştir.

(01 Nis '13, 14:29) dreampowder dreampowder's gravatar image

Kodun son kısmı şu şekilde.. http://pastie.org/7271850

Yapıldı mı yapılmadı mı göstermesinden vazgeçtim. Ben bu kafa ile yapamam çünkü. :D Senide baya yordum çok teşekkür ediyorum. Son olarak ufacık bir soru mailview de keyboard yukarda çıkıyor sanki iphone 4deymiş gibi ve alt kısım boş kalıyor. Bunun sebebi ne olabilir?

(01 Nis '13, 14:45) Salieh Salieh's gravatar image

son olarak yapacakların:

1- [self presentViewController:sendmail animated:YES completion:nil]; yerine presentModalViewController çağrısı..

2- class'ının .h dosyasında class tanımının yanına <mfmailcomposerdelegate> tanımlamasını ekle.

3- [sendmail setMailComposerDelegate:self] olarak ayarlaman gerekiyor yoksa mail ekranın gönderdikten sonra ekrandan gitmez.

4- mailcomposer 'ın dismiss olması için delegate metodunu eklemen gerekiyor.

5- ilgili kodu buraya yapıştırıyorum içerisinden ayıklarsın :) http://pastie.org/7271927

(01 Nis '13, 14:56) dreampowder dreampowder's gravatar image

delegatelar filan ayarlı zaten. presentModalViewController iOS 6 için bu beni sıkıntıya sokar.

(01 Nis '13, 15:00) Salieh Salieh's gravatar image

presentmodalviewcontroller ios5 te gyet güzel çalışıyor :)

(02 Nis '13, 07:16) dreampowder dreampowder's gravatar image
16 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×45
×16
×12
×1

Soruldu: 31 Mar '13, 18:02

Görüntüleme: 819 kez

Son güncelleme: 02 Nis '13, 07:16

powered by BitNami OSQA