मैं कुछ डेटा (स्ट्रिंग) को इस तरह से एक प्लिस्ट में लिख रहा हूं:

NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *pathProduct = [documentsDirectory stringByAppendingPathComponent:@"unicurd.plist"];           

NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:pathProduct])
    {
    NSString *bundlePath=[[NSBundle mainBundle] pathForResource:@"unicurd" ofType:@"plist"];
        [fileManager copyItemAtPath:bundlePath toPath:pathProduct error:&error];

    }


    NSString *recipiBookMark= pageURL;

    NSMutableDictionary *recipieBM = [[NSMutableDictionary alloc] init];
    [recipieBM setObject:recipiBookMark forKey:@"BookMarks"];

    BOOL filewrite = [recipieBM writeToFile:@"unicurd.plist" atomically:YES];
    if(filewrite)
    {
        //do somthing
    }
}

लेकिन यह फाइल पर नहीं लिख रहा है। फाइलराइट का मान हाँ दिखा रहा है लेकिन प्लिस्ट में यह केवल आइटम 0 और मान फ़ील्ड खाली दिखा रहा है।

1
Archana Chaurasia 2 मई 2011, 12:48
1
आप अपने ऐप के बंडल में लिखने का प्रयास कर रहे हैं, जिसकी iOS में अनुमति नहीं है। आज के पहले के इस प्रश्न के उत्तरों पर एक नज़र डालें।
 – 
jscs
2 मई 2011, 13:00

2 जवाब

सबसे बढ़िया उत्तर

इस तरह कोशिश करो..

 [recipieBM writeToFile: pathProduct atomically:YES];    

संपादित करें:

// Create the new dictionary that will be inserted into the plist.
NSMutableDictionary *nameDictionary = [NSMutableDictionary dictionary];
[nameDictionary setValue:@"John Doe" forKey:@"fullName"];
[nameDictionary setValue:@"555 W 1st St" forKey:@"address"];

// Open the plist from the filesystem.
NSMutableArray *plist = [NSMutableArray arrayWithContentsOfFile:@"/path/to/file.plist"];
if (plist == nil) plist = [NSMutableArray array];
[plist addObject:nameDictionary];
[plist writeToFile:@"/path/to/file.plist" atomically:YES];
1
Aravindhan 2 मई 2011, 14:22
धन्यवाद!!! इसका लेखन लेकिन जब मैं दूसरी बार लिखता हूं तो यह पिछले लिखित डेटा को अधिलेखित कर देता है। लेकिन मुझे अगले डेटा को प्लिस्ट में एक नई प्रविष्टि के रूप में लिखना होगा।
 – 
Archana Chaurasia
2 मई 2011, 13:25
मुझे सरणी का उपयोग कहां करना चाहिए? क्या आप मेरे उपरोक्त कोड के अनुसार कुछ कोड डाल सकते हैं।
 – 
Archana Chaurasia
2 मई 2011, 13:42
स्ट्रिंग का उपयोग करने के बजाय सरणी का उपयोग करें
 – 
Aravindhan
2 मई 2011, 13:57
मैं इस तरह लिख रहा हूँ: BookMarkArray=[[NSMutableArray alloc] init]; [बुकमार्कअरे एडऑब्जेक्ट: पेजयूआरएल]; NSMutableDictionary *recipieBM = [[NSMutableDictionary आवंटन] init]; [प्राप्तकर्ता बीएम सेटऑब्जेक्ट: BookMarkArray forKey:@"BookMarks"]; बूल फाइलराइट = [प्राप्तकर्ता बीएम राइटटॉफाइल: पथ उत्पाद परमाणु रूप से: हाँ]; अगर (फाइलराइट) {// कुछ करें}
 – 
Archana Chaurasia
2 मई 2011, 14:14

आपको दस्तावेज़ निर्देशिका से प्राप्त फ़ाइल पथ पर लिखना चाहिए

if(![fileManager fileExistsAtPath:pathProduct])
    {
    NSString *bundlePath=[[NSBundle mainBundle] pathForResource:@"unicurd" ofType:@"plist"];
        [fileManager copyItemAtPath:bundlePath toPath:pathProduct error:&error];

    }


    NSString *recipiBookMark= pageURL;

    NSMutableDictionary *recipieBM = [[NSMutableDictionary alloc] init];
    [recipieBM setObject:recipiBookMark forKey:@"BookMarks"];

    BOOL filewrite = [recipieBM writeToFile:pathProduct atomically:YES];
    if(filewrite)
    {
        //do somthing
    }
}
1
visakh7 2 मई 2011, 12:59