我确信这是一个简单问题的简单答案,但我似乎无法弄明白。
非常感谢任何帮助。
我已经下载了包含来自ACT的联系信息的.csv!数据库。
像这样...
PFQuery *jobsQuery = [PFQuery queryWithClassName:@"Jobs"];
[jobsQuery getObjectInBackgroundWithId:@"eWuJ6toJbO" block:^(PFObject *object, NSError *error) {
if (!error) {
PFFile *csvFile = [object objectForKey:@"Contact"];
[csvFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
NSString *storePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"jobsfile.csv"];
[data writeToFile:storePath options:NSDataWritingAtomic error:&error];
uncompletedJobs = [[[NSString stringWithContentsOfFile:storePath encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]mutableCopy];
[self.table reloadData];
[self.refreshControl endRefreshing];
NSLog(@"Found on the database %@",uncompletedJobs);
}else{
NSLog(@"Error: %@ %@", error, [error userInfo]);
[self.refreshControl endRefreshing];
}
}];
}else{
NSLog(@"Error: %@ %@", error, [error userInfo]);
[self.refreshControl endRefreshing];
}
}];
}
下载后会添加新的联系信息。
NSMutableString *tmpString = [NSMutableString stringWithFormat:@"%@,%@,%@,%@",[custArray objectAtIndex:0],[custArray objectAtIndex:1],[custArray objectAtIndex:2],[custArray objectAtIndex:3]]; //creating a string from the array.
[uncompletedJobs addObject:tmpString]; //adding the new string to uncompletedJobs Array.
然后将其上传到服务器
-(void)createCSV {
NSMutableString *csv = [NSMutableString stringWithFormat:@"%@",uncompletedJobs];
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory,
NSUserDomainMask, YES); //Saving to documnets folder.
NSString *path = [paths objectAtIndex:0];
NSString *filePath = [path stringByAppendingPathComponent:@"newContacts.csv"]; //Save Name.
NSError *error;
BOOL res = [csv writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; //Has it saved successfully? BOOL.
if (!res) {
NSLog(@"Error %@ while writing to file %@", [error localizedDescription], filePath );
}else{
NSLog(@"No error creating save file! uploading...");
[self upload];
}
}
- (NSString *)getPath {
NSString *paths = [NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
return [paths stringByAppendingPathComponent:@"newContacts.csv"];
}
-(void)upload {
NSString *SavedDataPath = [self getPath];
NSString *path = SavedDataPath;
NSData *data = [NSData dataWithContentsOfFile:path];
PFFile *file = [PFFile fileWithName:@"newContacts.csv" data:data];
NSLog(@"raw data we are uploading = \"%@\"", data);
PFQuery *jobsQuery = [PFQuery queryWithClassName:@"Jobs"];
[jobsQuery getObjectInBackgroundWithId:@"eWuJ6toJbO" block:^(PFObject *object, NSError *error) {
object[@"Contact"] = file;
[object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error Sending!"
message:[NSString stringWithFormat:@"Error Report: %@ %@",error, error.userInfo] delegate:self cancelButtonTitle:@"I've taken note" otherButtonTitles:nil];
[alert show];
}else{
NSLog(@"Upload Complete, Hoorah!");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Upload Complete!"
message:@"You've successfully uploaded a new customer to the database." delegate:self cancelButtonTitle:@"Thanks" otherButtonTitles:nil];
[alert show];
customerDropdown.hidden = YES;
}
}];
}];
}
最初当数据被下载并放入uncompletedJobs时,输出看起来像这样......
(
"Company,Contact,Address 1,Address 2,Address 3,City,County,Postcode,",
"Company,Contact,Address 1,Address 2,Address 3,City,County,Postcode,",
"New Data,New Data,New Data,New Data,New Data,New Data,New Data,New Data,",
)
然后在步骤1(包含添加到.csv的新数据)再次从服务器下载数据时,格式化如下所示。如果随后保存,上传和重新下载更多数据,则会逐渐变得更糟。
(
"(",
" \"Company,Contact,Address 1,Address 2,Address 3,City,County,Postcode\",",
" \"Company,Contact,Address 1,Address 2,Address 3,City,County,Postcode\",",
" \"New Data,New Data,New Data,New Data,New Data,New Data,New Data,New Data\",",
")"
)
)
"(",
" \"(\",",
" \" \\\"Company,Contact,Address 1,Address 2,Address 3,City,County,Postcode\\\",\",",
" \" \\\"Company,Contact,Address 1,Address 2,Address 3,City,County,Postcode\\\",\",",
" \"New Data,New Data,New Data,New Data,New Data,New Data,New Data,New Data\",",
" \")\",",
")"
)
数据看起来格式正确,但是当它返回并被解析时出现了错误。
非常感谢任何帮助。
答案 0 :(得分:0)
NSMutableString *csv = [NSMutableString stringWithFormat:@"%@",uncompletedJobs];
uncompletedJobs是一个数组,所以你的字符串(csv)就像:
"( \" object0 \&#34 ;, \" object1 \&#34 ;, \" Object2的\" )"
如果你不解析它并将它添加到你的.csv,它会变得最糟糕,最糟糕......
因此,您需要循环遍历数组并添加NSMutableString的单个字符串。